范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python版的cocos2d库一个2D游戏开发GUI框架的入门详解

  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 官网代码效果图,代码省略。
  ===是不是入门了,很简单===
  喜欢就点赞、关注、转发和收藏。
  中文文档太少了,做一点贡献。

西安宝马男街头打恋人今天早晨,打开手机头条,就看见一则西安宝马男街头打一女子的视频。一个男人在宝马车的后面暴打一名女子,宝马车后备箱开着,男子欲将这名女子抱进后备箱。事件发生期间,许多车辆路过,并没有什么叫格局呢小的时候看书,看到格局两字,以为是衣服上的格,局又不知道什么,是不是屋?应该是格屋,一个小格是一个屋,印错了字吧。现在,很多地方用这两个字。城市里用的多,乡村用的少甚至基本没有。所购物塑料袋,该如何处理它人们依赖购物塑料袋,俗称方便袋,它是够方便的,人们已经是完全离不开它了。买蔬菜用它,买水果用它,买衣物用它,它无处不在。它从出厂,被送往各大超市,商店,小杂货铺,然后被使用它的人们我在家中尽量将生活垃圾分类我一直关注垃圾分类。也一直感觉垃圾混装,对资源造成的极大的浪费,垃圾填埋,已经占用了太多太多纯净的土地,造成土地资源的浪费和对纯净的土地造成严重的污染。我收集国外的垃圾分类方面的作因为床上有零食,而遭到体罚,问问是不是学校有这个规定9月27日,凤凰网上的一则消息,一名14岁的中学生,因为被一名来宿舍检查的学姐和一个老师发现在这名中学生的宿舍的床上有一包零食,被罚下蹲150次,而造成脚踝骨戳伤,不能行走。真是令学历低找工作难我很少去应聘自己不适合的位置,但是还是被拒绝过很多次,主要原因有几个方面。一个是我的学历比较低,不符合人家培养的目标。很多公司会招一些人进去培养,学好了职场晋升很快。第二个就是也没大厂是怎样做好季节性工作的?我在华润万家做采购岗,我们公司属于超市零售行业,算是季节性比较强的行业,尤其是生鲜部门。不同季节卖场售卖氛围及主推商品会有不同变化。比方负责水果采购的,不同季节有不同的水果需要去采大厂是怎样做好季节性工作的?我工作的单位是龙烟矿山公司,地处张家口市庞家堡镇,是一个有着百年历史的国企。由于建设的较早又偏僻,虽是企业但兼有许多社会职责,比如供水这一块,庞家堡镇的供水就由我单位负责。为保障全2019年6月23日,一个带着低檐帽的女人走进了我的诊室6月23日一个带着低檐帽的女人走进了我的诊室,开口就说乔主任,你可能不知道我因为阴道炎离婚了,这引起了我的好奇,于是细问下,她跟我说了下面的情况35岁,结婚6年,有一个聪明的儿子和女人应该追求怎样的美?女人有不爱美的吗?有,但那是很少的!即大部分女人都是爱美的,既是取悦自己,也是给别人留个好形象。那什么样的美才是值得女人追求的呢?如果你是有老婆的人,你同意老婆去微整容吗?如果你是女人四十真的是豆腐渣吗?女人到了四十岁,似乎各种小毛病就多起来了,我身边好多姐妹这样!四十岁的A姐叹气着说不知怎么回事,这头发突然掉得厉害,梳头时,有点怕,以后会不会光头呢?过一段时间后又见她说好在头发没
三要四不原则,开店取名必看所谓万事开头难,开店铺或者网店的第一步,就是要给自己的店铺取一个好听且比较旺财的名字,这样之后才能一帆风顺,财源广进!那要怎么才能取一个这样的好店名呢?其实技巧很简单,只要做到三要玉皇大帝为何姓张,你知道吗?根据2020年最新百家姓人口排名,前七位的姓氏分别为李王张刘陈杨赵,在这七大姓氏当中,除了张姓以外,其他六个姓都出过皇帝,哪怕是王姓还有一个王莽,只有张姓确实没有出现过被正史所承认孙俪长期保持90斤,原来一直在喝这款瘦身水,越喝越瘦越漂亮大家好,我是静静今天给大家分享一款孙俪同款瘦身汤,每到夏天我基本每天都会煮这道汤,这道汤特别适合喝水都长胖的胖子,身体湿气重,经常困倦乏力的人群,既可以减脂瘦身,又可以对身体有非常林大师解读姓氏名字号的由来从出生来到这个世界的那一刻起,名字就一直伴随着我们,充满爱意的乳名琅琅上口的小名满怀期许的大名,无一不是爱的凝聚。求学期间,我们会遇到各种各样的名字,尤其是古诗文的字号别名等,让人夏日必备掉秤汤,脂肪最怕这道汤,第一天吃完第二天就掉秤了大家好,我是静静今天给大家分享一道清油刮脂蔬菜汤,堪称可以让脂肪绕道走的汤,连喝七天裤子都要改小一码,一起看一下吧首先准备一把黑木耳,加入一点白醋,增加木耳的泡发速度然后再加入适量消失的古代地名,你家乡古称什么?如同人都有自己的名字一样,每座城市也有自己的专属名字。中国历史悠久,所以有些城市在不同的历史时期有不同的名字,比如湖南的大庸改名张家界,凭借着举世闻名张家界国家森林公园,籍籍无名的夏天多吃葡萄干,教你养生吃法,营养美味又健康大家好,我是静静葡萄干酸酸甜甜的,我们大家都爱吃葡萄干,含有丰富的蛋白质矿物质以及各种微量元素,尤其是铁元素的含量非常的高,今天就用葡萄干来分享一道养生吃法,这种吃法可以充分的发挥这十大知名互联网公司,名字如何得来的?说起互联网公司,就不得不提到互联网三巨头BAT(百度阿里巴巴和腾讯),因为他们涉及的领域实在是太广了,除了自身的产业,还收购投资了很多互联网公司。我们几乎每天都在用他们的产品,微信改名不等于改命,好的心态才会带来好运一个人的名字会伴随自己很长一段时间,甚至是一个人的一生,对个人来说非常重要。姓名是关系一个人的命运的,在说文解字中这样解释名,自命也,从口,从夕。夕者,冥也,冥不相见,故以口自名。湿气重百病生,教你红豆薏米水的正确煮法,祛除湿气一身轻松大家好,我是小静夏天天气炎热,湿气也非常的重,我们大家都知道,夏季养生必备的就是红豆薏米水啦,红豆薏米水看似简单,但是煮的方式不对的话,不仅起不到作用,还会伤身,今天给大家分享红豆熬夜多皮肤差,黑眼圈大眼袋,多喝玉竹元气豆浆,元气满满气色好大家好,我是静静有没有朋友像我一样熬夜之后黑眼圈大,眼袋皮肤就像垮掉了一样,我们大家都知道熬夜是非常伤元气的,今天给大家分享这款玉竹元气豆浆,非常适合在熬夜之后补救首先准备20克黄