1 说明:

=====

1.1 cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。

1.2 不逊色于pygame,但是其实

Python版的cocos2d库是基于pygame和pyglet的,也就是集大成者

1.3 中文教程少的可怜,所以写一个入门教程,把坑填了,亲测过,注释里有讲解。

1.4

A 2D framework for games and multimedia===一个游戏和多媒体的2D框架。

1.5 环境:

华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。

2 安装:

=====

pip install cocos2d

#本机安装

#sudo pip3.8 install cocos2d #太慢了

#sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple cocos2d #超快,推荐国内源安装

3 官网:

=====

https://github.com/los-cocos/cocos

https://pypi.org/project/cocos2d/

http://python.cocos2d.org/doc/programming_guide/quickstart.html

4 Helloworld.py:

===========

4.1 说明:很简单,但很重要;解决中文字体问题、解决窗口大小和名称问题。

4.2 代码:

#注意导出模块是cocos,不是cocos2

#但是安装是pip install cocos2d

import cocos

class HelloWorld(cocos.layer.Layer):

def __init__(self):

super(HelloWorld, self).__init__()

label = cocos.text.Label(

#'Hello World!',

'你好,世界!',

#font_name='Times New Roman', #本身不支持中文,改为下面

font_name='微软雅黑', #微软雅黑是支持中文的字体

font_size=32,

anchor_x='center', anchor_y='center')

#label.position = 320, 240 #默认窗口大小的一半,就是中心位置

# 获得主窗口的宽度和高度,是一个二元组

width, height = cocos.director.director.get_window_size()

# 设置标签的位置

label.position = width // 2, height // 2 # //整数除法 去掉小数部分

self.add(label)

if __name__ == "__main__":

#cocos.director.director.init() #默认窗口大小

#cocos.director.director.init(width=640,height=480,caption="hello world")

#自定义窗口大小和标题

cocos.director.director.init(width=1200,height=800,caption="你好,世界!") #本身就是支持中文

hello_layer = HelloWorld()

main_scene = cocos.scene.Scene(hello_layer)

cocos.director.director.run(main_scene)

4.3 效果图:

4.4 定义main函数问题,采用默认设置,代码如下:

import cocos

class HelloWorld(cocos.layer.Layer):

def __init__(self):

super(HelloWorld, self).__init__()

label = cocos.text.Label(\

'Hello, world',\

font_name='Times New Roman',\

font_size=32,\

anchor_x='center', anchor_y='center')

label.position = 320, 240

self.add(label)

#定义main函数问题

def main():

cocos.director.director.init()

hello_layer = HelloWorld()

main_scene = cocos.scene.Scene (hello_layer)

cocos.director.director.run(main_scene)

if __name__ == '__main__':

main()

5 图片显示和音乐播放:

=================

5.1 说明:对图片格式进行测试和播放音乐格式进行测试,注释里有。

5.2 代码一:

import cocos

#下面2个模块必须导出

from cocos.scenes.transitions import *

from cocos.audio.pygame import music

#背景层

class Game_BG(cocos.layer.Layer):

def __init__(self):

super(Game_BG,self).__init__()

d_width, d_height = cocos.director.director.get_window_size()

# 创建背景精灵,图片格式,images文件夹与本代码在同一个目录下

#background = cocos.sprite.Sprite('images/bg.jpg')

#background = cocos.sprite.Sprite('images/help-up.png')

#background = cocos.sprite.Sprite('images/2.jpeg')

background = cocos.sprite.Sprite('images/1.ico')

#background = cocos.sprite.Sprite('images/fruit.svg') #报错

#background = cocos.sprite.Sprite('images/yytd.gif') #报错

background.position = d_width // 2, d_height // 2

self.add(background)

if __name__=='__main__':

#指定背景音乐后台 sdl,很重要!!否则背景音乐不能播放

cocos.director.director.init(width=640,height=480,caption="picture&music",audio_backend='sdl')

bg=Game_BG()

main_scence=cocos.scene.Scene(bg)

#播放背景音乐

#music.load('sound/sn.mp3'.encode())#报错,还有指定路径,这与图片默认路径不一样

music.load('/home/xgj/Desktop/Cocos2d/coex/sound/sn.mp3'.encode())

music.play(loops=-1) #播放 循环次数

music.set_volume(1)#声音大小

cocos.director.director.run(main_scence)

5.2 代码二:高级一些,文字label和图片sprite缩放和旋转,加上背景音乐。

import cocos

from cocos.actions import *

class Hello_world(cocos.layer.ColorLayer):

def __init__(self):

#设置背景属性

super(Hello_world, self).__init__(64,64,224,255)

#设置标签属性

label = cocos.text.Label('hello world',

font_name = 'Times New Roman',font_size = 32,

anchor_x = 'center',anchor_y = 'center')

#设置标签位置

label.position = 600,200 #建议窗口大小的一半,是居中

#添加标签到层

self.add(label)

#创建精灵,并配置精灵属性,图片的文件夹images与代码在同一个目录下

man_sprite = cocos.sprite.Sprite("images/bg.jpeg")

man_sprite.position = 600,500

#设置精灵显示大小

man_sprite.scale =0.8

#添加精灵到层中

self.add(man_sprite,z = 1,name='man')

#使用动作方法函数,在3秒钟里缩放3次

scale = ScaleBy(3,duration=3)

#标签重复以上动作+旋转

label.do(Repeat(scale+Reverse(scale)))

#精灵重复 旋转+缩放动作

man_sprite.do(Repeat(Reverse(scale)+scale))

#cocos.director.director.init() #默认的

#---add,加背景音乐的设置如下---

cocos.director.director.init(width=1200,height=800,audio_backend='sdl')

from cocos.scenes.transitions import * #包在此处导入,是便于学习

from cocos.audio.pygame import music #一般包是放在第一步

music.load('/home/xgj/Desktop/Cocos2d/coex/sound/sn.mp3'.encode()) #背景音乐文件需要指定路径,区别

music.play(loops=-1) #播放 循环次数

music.set_volume(1)#声音大小

#---add,加背景音乐如上---

main_layer = Hello_world()

#该图层在10秒钟内旋转360度

main_layer.do(RotateBy(360,duration=10))

main_scene = cocos.scene.Scene(main_layer)

cocos.director.director.run(main_scene)

5.3 效果图:

6 按钮放大和缩小,播放wav文件:

6.1 代码:

import cocos

from cocos.scenes.transitions import * #播放音乐包一

from cocos.audio.pygame import music #播放音乐包二

from cocos.audio.effect import Effect

#背景层

class Game_BG(cocos.layer.Layer):

def __init__(self):

super(Game_BG,self).__init__()

d_width, d_height = cocos.director.director.get_window_size()

# 创建背景精灵

background = cocos.sprite.Sprite('images/bg.jpeg')

background.position = d_width // 2, d_height // 2

self.add(background)

#自定义菜单类

class main_menu(cocos.menu.Menu):

def __init__(self):

super(main_menu, self).__init__()

# 也可以改变图片项的大小

# 改变字体

self.font_item['font_size'] = 66

# 选中时

self.font_item_selected['font_size'] = 66

#改变颜色 rgba

self.font_item['color'] = (255,255,255,25)

# 选中时

self.font_item_selected['color'] = (215,255,255,255)

menu_start=cocos.menu.ImageMenuItem('images/start-up.png',self.menu_start_callback)

menu_setting= cocos.menu.ImageMenuItem('images/setting-up.png', self.menu_setting_callback)

help_setting = cocos.menu.ImageMenuItem('images/help-up.png', self.menu_help_callback)

#创建菜单(添加项的列表,自定义布局位置)

self.create_menu([menu_start,menu_setting,help_setting],

layout_strategy=cocos.menu.fixedPositionMenuLayout([(500,339),(500,220),(500,100)]),

selected_effect=cocos.menu.zoom_in(),

unselected_effect=cocos.menu.zoom_out())

#定义播放按钮功能设置

def menu_start_callback(self):

#注意播放wav与mp3一样,需要指定具体路径和目录,否则报错

yinxiao=Effect('/home/xgj/Desktop/Cocos2d/coex/sound/dd.wav') #音效

#yinxiao=Effect('sound/dd.wav') # 报错

yinxiao.play()

def menu_help_callback(self):

pass

def menu_setting_callback(self):

pass

if __name__=='__main__':

#初始化导演

cocos.director.director.init(width=640,height=480,caption="png按钮放大",audio_backend='sdl')

#将背景层 添加到场景

bg=Game_BG()

main_scence=cocos.scene.Scene(bg)

#添加菜单

mainmenu=main_menu()

main_scence.add(mainmenu)

# 播放背景音乐

music.load('/home/xgj/Desktop/Cocos2d/coex/sound/sn.mp3'.encode())

music.play(loops=-1) # 播放 循环次数

music.set_volume(1) # 声音大小

#启动场景

cocos.director.director.run(main_scence)

6.2 效果图:

在这基础上去做一个音乐播放器是很有动感的!!

7 圆形球动感:

===========

7.1 代码:

import pyglet

from cocos.director import director

from cocos.scene import Scene

from cocos.layer import Layer

from cocos.actions import JumpBy, Lens3D, Reverse

class BackgroundLayer(Layer):

def __init__(self):

super(BackgroundLayer, self).__init__()

#导入图片image需要导入pyglet包,注意图片与代码文件在一个目录下即可

self.image = pyglet.resource.image('flag.png')

#self.image = pyglet.resource.image('yytd.gif') #虽然能显示,但是不是gif那样的动感

def draw(self):

self.image.blit(0, 0)

if __name__ == "__main__":

#主窗口可调节大小

director.init(resizable=True)

director.set_depth_test()

scene = Scene(BackgroundLayer())

lens = Lens3D(radius=150, lens_effect=0.7, center=(150, 150), grid=(20, 16), duration=50)

jump = JumpBy((360, 0), 170, 3, 4)

action = scene.do(lens)

scene.do((jump + Reverse(jump)) * 5, target=action)

director.run(scene)

7.2 效果图:

8 官网代码效果图,代码省略。

===是不是入门了,很简单===

喜欢就点赞、关注、转发和收藏。

中文文档太少了,做一点贡献。

cocos2d for python_Python版的cocos2d库:一个2D游戏开发GUI框架的入门详解相关推荐

  1. 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条并修改cocos2d源码实现“理想”游戏进度条!...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  2. [杨可桢]机械设计基础题库 机械设计基础习题 2022机械设计基础考试题答案 杨可桢《机械设计基础》(第7版)笔记和课后习题(含考研真题)详解

    [杨可桢]机械设计基础题库  机械设计基础习题  2022机械设计基础考试题答案-硕达学习网 杨可桢<机械设计基础>(第7版)笔记和课后习题(含考研真题)详解 目录 第1章 平面机构的自由 ...

  3. python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  4. python获取系统时间函数_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  5. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解

    使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...

  6. dx绘制2d图像_【教程】使用DX9做一个2D游戏(1)

    本文最先发表在贴吧,现在整理到此处,之后所有更新将在这里进行. by Chu @ XDU 2012/11/25 版权所有,禁止用于商业用途. 转载请注明出处. 用DX9做一个2D游戏显然不是一件容易的 ...

  7. 7、C++各大有名库的介绍——游戏开发

    KlayGE国内游戏开发高手自己用C++开发的游戏引擎.KlayGE是一个开放源代码.跨平台的游戏引擎,并使用Python作脚本语言.KlayGE在LGPL协议下发行.感谢龚敏敏先生为中国游戏开发事业 ...

  8. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

  9. linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解

    前言 UTC 时间DateTime.UtcNow 和 系统本地时间 DateTime.Now 相差8个时区 ,美国本地时间和北京时间相差15个时区: 美国,而一般使用UTC时间方便统一各地区时间差异. ...

最新文章

  1. java mp3 暂停,Java MP3播放器 - 使用jLayer播放,暂停和搜索不能正常工作
  2. shiro(一)简介、理论知识
  3. EasyUI实现两个列表联动
  4. 人工智能与量子计算在有前途的新忆阻器中融合
  5. php 情书,php趣味编程 - php输出笛卡尔情书的秘密
  6. 动态规划编程模型的本质及应用
  7. java遍历范型list_Java 集合(1)-- 俯瞰 Java 集合源码以及分类
  8. 灰度共生矩阵GLCM及其matlab实现
  9. 常用前端Js框架简介
  10. 26 伪造ICMP数据包
  11. ISO20000与ITIL、ISO27000、CMMI、BS25999的相互区别
  12. matlab转子动力学视频分析,基于ANSYS经典界面的光盘轴的转子动力学分析(谐响应分析)...
  13. java 英文日期转数字_Java SimpleDateFormat中英文时间格式化转换详解
  14. 【微服务集成阿里SMS短信服务发送短信】
  15. 统计java代码行数_统计项目代码行数
  16. javascript检测各种浏览器型号和版本、检测是否支持flash并显示版本
  17. 阿里云centos上处理2t3ik与ddgs病毒
  18. Bottom-Up和Top-Down
  19. 2.什么是JAVA内存模型?
  20. 在线抓包工具Whistle

热门文章

  1. CorelDRAW 2021最新版下载安装包更新 矢量图形设计软件
  2. Ubuntu 上 Mediapipe 运行Hello World! on Android例子
  3. VISSIM COM接口
  4. pat考试1018 锤子剪刀布
  5. 88FTP数据连接和控制连接
  6. 文件无法打开怎么解决
  7. 累计分布函数CDF、互补累计分布函数CCDF、期望Expection
  8. 基于Arm Cortex内核的32位MCU和MPU(M0、M0+、M3、M4、M33、M7、A7)
  9. c# 发邮件时发送会议邀请icalendar包括更新以及取消
  10. sqlmap测试靶机