Python版的cocos2d库一个2D游戏开发GUI框架的
1说明:
1。1cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。
1。2不逊色于pygame,但是其实Python版的cocos2d库是基于pygame和pyglet的,也就是集大成者。
1。3中文教程少的可怜,所以写一个入门教程,把坑填了,亲测过,注释里有讲解。
1。4A2Dframeworkforgamesandmultimedia一个游戏和多媒体的2D框架。
1。5环境:
华为笔记本电脑、深度deepinlinux操作系统、python3。8和微软vscode编辑器。
2安装:
pipinstallcocos2d本机安装sudopip3。8installcocos2d太慢了sudopip3。8installihttps:mirrors。aliyun。compypisimplecocos2d超快,推荐国内源安装
3官网:
https:github。comloscocoscocoshttps:pypi。orgprojectcocos2dhttp:python。cocos2d。orgdocprogrammingguidequickstart。html
4Helloworld。py:
4。1说明:很简单,但很重要;解决中文字体问题、解决窗口大小和名称问题。
4。2代码:注意导出模块是cocos,不是cocos2但是安装是pipinstallcocos2dimportcocosclassHelloWorld(cocos。layer。Layer):definit(self):super(HelloWorld,self)。init()labelcocos。text。Label(HelloWorld!,你好,世界!,fontnameTimesNewRoman,本身不支持中文,改为下面fontname微软雅黑,微软雅黑是支持中文的字体fontsize32,anchorxcenter,anchorycenter)label。position320,240默认窗口大小的一半,就是中心位置获得主窗口的宽度和高度,是一个二元组width,heightcocos。director。director。getwindowsize()设置标签的位置label。positionwidth2,height2整数除法去掉小数部分self。add(label)ifnamemain:cocos。director。director。init()默认窗口大小cocos。director。director。init(width640,height480,captionhelloworld)自定义窗口大小和标题cocos。director。director。init(width1200,height800,caption你好,世界!)本身就是支持中文hellolayerHelloWorld()mainscenecocos。scene。Scene(hellolayer)cocos。director。director。run(mainscene)
4。3效果图:
4。4定义main函数问题,采用默认设置,代码如下:importcocosclassHelloWorld(cocos。layer。Layer):definit(self):super(HelloWorld,self)。init()labelcocos。text。Label(Hello,world,fontnameTimesNewRoman,fontsize32,anchorxcenter,anchorycenter)label。position320,240self。add(label)定义main函数问题defmain():cocos。director。director。init()hellolayerHelloWorld()mainscenecocos。scene。Scene(hellolayer)cocos。director。director。run(mainscene)ifnamemain:main()
5图片显示和音乐播放:
5。1说明:对图片格式进行测试和播放音乐格式进行测试,注释里有。
5。2代码一:importcocos下面2个模块必须导出fromcocos。scenes。transitionsimportfromcocos。audio。pygameimportmusic背景层classGameBG(cocos。layer。Layer):definit(self):super(GameBG,self)。init()dwidth,dheightcocos。director。director。getwindowsize()创建背景精灵,图片格式,images文件夹与本代码在同一个目录下backgroundcocos。sprite。Sprite(imagesbg。jpg)backgroundcocos。sprite。Sprite(imageshelpup。png)backgroundcocos。sprite。Sprite(images2。jpeg)backgroundcocos。sprite。Sprite(images1。ico)backgroundcocos。sprite。Sprite(imagesfruit。svg)报错backgroundcocos。sprite。Sprite(imagesyytd。gif)报错background。positiondwidth2,dheight2self。add(background)ifnamemain:指定背景音乐后台sdl,很重要!!否则背景音乐不能播放cocos。director。director。init(width640,height480,captionpicturemusic,audiobackendsdl)bgGameBG()mainscencecocos。scene。Scene(bg)播放背景音乐music。load(soundsn。mp3。encode())报错,还有指定路径,这与图片默认路径不一样music。load(homexgjDesktopCocos2dcoexsoundsn。mp3。encode())music。play(loops1)播放循环次数music。setvolume(1)声音大小cocos。director。director。run(mainscence)
5。2代码二:高级一些,文字label和图片sprite缩放和旋转,加上背景音乐。importcocosfromcocos。actionsimportclassHelloworld(cocos。layer。ColorLayer):definit(self):设置背景属性super(Helloworld,self)。init(64,64,224,255)设置标签属性labelcocos。text。Label(helloworld,fontnameTimesNewRoman,fontsize32,anchorxcenter,anchorycenter)设置标签位置label。position600,200建议窗口大小的一半,是居中添加标签到层self。add(label)创建精灵,并配置精灵属性,图片的文件夹images与代码在同一个目录下manspritecocos。sprite。Sprite(imagesbg。jpeg)mansprite。position600,500设置精灵显示大小mansprite。scale0。8添加精灵到层中self。add(mansprite,z1,nameman)使用动作方法函数,在3秒钟里缩放3次scaleScaleBy(3,duration3)标签重复以上动作旋转label。do(Repeat(scaleReverse(scale)))精灵重复旋转缩放动作mansprite。do(Repeat(Reverse(scale)scale))cocos。director。director。init()默认的add,加背景音乐的设置如下cocos。director。director。init(width1200,height800,audiobackendsdl)fromcocos。scenes。transitionsimport包在此处导入,是便于学习fromcocos。audio。pygameimportmusic一般包是放在第一步music。load(homexgjDesktopCocos2dcoexsoundsn。mp3。encode())背景音乐文件需要指定路径,区别music。play(loops1)播放循环次数music。setvolume(1)声音大小add,加背景音乐如上mainlayerHelloworld()该图层在10秒钟内旋转360度mainlayer。do(RotateBy(360,duration10))mainscenecocos。scene。Scene(mainlayer)cocos。director。director。run(mainscene)
5。3效果图:
6按钮放大和缩小,播放wav文件:
6。1代码:importcocosfromcocos。scenes。transitionsimport播放音乐包一fromcocos。audio。pygameimportmusic播放音乐包二fromcocos。audio。effectimportEffect背景层classGameBG(cocos。layer。Layer):definit(self):super(GameBG,self)。init()dwidth,dheightcocos。director。director。getwindowsize()创建背景精灵backgroundcocos。sprite。Sprite(imagesbg。jpeg)background。positiondwidth2,dheight2self。add(background)自定义菜单类classmainmenu(cocos。menu。Menu):definit(self):super(mainmenu,self)。init()也可以改变图片项的大小改变字体self。fontitem〔fontsize〕66选中时self。fontitemselected〔fontsize〕66改变颜色rgbaself。fontitem〔color〕(255,255,255,25)选中时self。fontitemselected〔color〕(215,255,255,255)menustartcocos。menu。ImageMenuItem(imagesstartup。png,self。menustartcallback)menusettingcocos。menu。ImageMenuItem(imagessettingup。png,self。menusettingcallback)helpsettingcocos。menu。ImageMenuItem(imageshelpup。png,self。menuhelpcallback)创建菜单(添加项的列表,自定义布局位置)self。createmenu(〔menustart,menusetting,helpsetting〕,layoutstrategycocos。menu。fixedPositionMenuLayout(〔(500,339),(500,220),(500,100)〕),selectedeffectcocos。menu。zoomin(),unselectedeffectcocos。menu。zoomout())定义播放按钮功能设置defmenustartcallback(self):注意播放wav与mp3一样,需要指定具体路径和目录,否则报错yinxiaoEffect(homexgjDesktopCocos2dcoexsounddd。wav)音效yinxiaoEffect(sounddd。wav)报错yinxiao。play()defmenuhelpcallback(self):passdefmenusettingcallback(self):passifnamemain:初始化导演cocos。director。director。init(width640,height480,captionpng按钮放大,audiobackendsdl)将背景层添加到场景bgGameBG()mainscencecocos。scene。Scene(bg)添加菜单mainmenumainmenu()mainscence。add(mainmenu)播放背景音乐music。load(homexgjDesktopCocos2dcoexsoundsn。mp3。encode())music。play(loops1)播放循环次数music。setvolume(1)声音大小启动场景cocos。director。director。run(mainscence)
6。2效果图:
在这基础上去做一个音乐播放器是很有动感的!!
7圆形球动感:
7。1代码:importpygletfromcocos。directorimportdirectorfromcocos。sceneimportScenefromcocos。layerimportLayerfromcocos。actionsimportJumpBy,Lens3D,ReverseclassBackgroundLayer(Layer):definit(self):super(BackgroundLayer,self)。init()导入图片image需要导入pyglet包,注意图片与代码文件在一个目录下即可self。imagepyglet。resource。image(flag。png)self。imagepyglet。resource。image(yytd。gif)虽然能显示,但是不是gif那样的动感defdraw(self):self。image。blit(0,0)ifnamemain:主窗口可调节大小director。init(resizableTrue)director。setdepthtest()sceneScene(BackgroundLayer())lensLens3D(radius150,lenseffect0。7,center(150,150),grid(20,16),duration50)jumpJumpBy((360,0),170,3,4)actionscene。do(lens)scene。do((jumpReverse(jump))5,targetaction)director。run(scene)
7。2效果图:
8官网代码效果图,代码省略。
是不是入门了,很简单
喜欢就点赞、关注、转发和收藏。
中文文档太少了,做一点贡献。
英语鸡娃界,这棵近1万字的桥梁大树,你一定要收藏前一阵子和一个家长聊天,她说参考网上的书单,给孩子买回去了一堆书,但是都好难啊,孩子看不懂不喜欢,自己也好受挫,瞬间不知道孩子大概到什么程度才能看这些书了。育儿育儿经英语……
孩子学习成绩差怎么办?孩子为什么会学习困难在家长,老师眼中,平常过度活跃,爱玩不爱学习的,注意力不集中上的孩子,一般都是学习能力差,或者无法完成作业的孩子,一般被贴上了差生的标签。孩子一般被扣上笨、蠢的帽子。然而并没有……
婚姻中,聪明的女人从不在外面炫耀这三件事,只有傻女人才做一个人是否聪明不是她拥有多少才华,也不是她拥有多少财富,而聪明的女人不管有没有结婚都能把自己的日子过得很舒服自在。而那些整天埋怨社会,埋怨父母,埋怨身边的人,只有傻女人才……
初中生黑板报走红,隔壁班看后羡慕不已,美术老师也自愧不如学生进入初中之后,学生的思想会发生重大变化,学生开始学会展现自己,学生开始注重成绩。学生也更加注重班级的荣誉,学生会主动选择当黑板报的主要负责任。现在的初中是越来越多元化……
为什么别人家的孩子不挑食,原来纠正挑食厌食有妙招朋友因为要去练车的缘故,让我帮忙带几天孩子,就是这几天让我知道了,原来真的有孩子不挑食!不管什么食物都想尝试,来之不拒。相反,我儿子简直就是噩梦般的存在,太甜了,不吃!葱花,不……
家庭感统训练前庭觉篇说到前庭觉,不了解的家长一定会误以为是在人体前面的某个感觉系统,但实际上,前庭觉虽然带个前字,它的大本营却在大脑的后下方。在大脑后下方脑干的前面,有个微小的雷达式感应器官……
食谱早知道花幼一周食谱(2021。10。182021。10。(杨传旨陈炜)2021年10月16日是第41个世界粮食日。今年世界粮食日主题是:行动造就未来。更好生产、更好营养、更好环境、更好生活。一粥一饭,当思来之不易,半丝半……
宁波余姚枇杷园孵鸟记(中)前言:本组孵鸟记由余姚御姚园白枇杷生态农场的主人徐超超提供素材,经本频道编辑整理,将以倒叙形式分批次陆续刊发。御姚园白枇杷生态农场里有枇杷树、土鸡、刺猬、鸟儿等动植物,俨然是小……
学琴只能从娃娃抓起?中老年人应该怎样学钢琴?方法看这里近几年,随着人们物质生活水平的日益提高和对精神生活的不断追求,很多的中老年人也加入到学钢琴的行列,使学习钢琴不再是青少年的专利。尤其是自99年以来举办的历届全国中老年钢琴大赛,……
幸福有礼,广元欧蓝德限时特惠1。7万元本周欧蓝德最新报价:广汽三菱广元协和4s店即日起限时促销,最高优惠1。7万元,如此优惠的降幅,大家可千万不要错过,店铺地址:广元市利州区环城南路63号促销时间2021年0……
从容地接受失败,人生无需太完美从容地接受失败,人生无须太完美英国作家琼恩在她的演讲中这样说道:失败只是意味着剥去了生活中无关紧要的东西。。。现在,我终于自由了,因为我最大的坎坷已成为过去,而我依……
幼小衔接每到孩儿写字,老母亲心态就崩在幼小衔接方面,我不担心孩子的阅读、识字、计算,也不担心他的专注力,唯一担心的是:写字。原因有三:一是他不爱写字,二是写起来超慢,三是字写的真难看。一让他写字,他就……