發(fā)布時(shí)間:2023-11-27 09:12:01 瀏覽量:126次
1 說明:
=====
1.1 cocos2d是一個(gè)基于MIT協(xié)議的開源框架,用于構(gòu)建游戲、應(yīng)用程序和其他圖形界面交互應(yīng)用。
1.2 不遜色于pygame,但是其實(shí)Python版的cocos2d庫是基于pygame和pyglet的,也就是集大成者。
1.3 中文教程少的可憐,所以寫一個(gè)入門教程,把坑填了,親測過,注釋里有講解。
1.4 A 2D framework for games and multimedia===一個(gè)游戲和多媒體的2D框架。
1.5 環(huán)境:
華為筆記本電腦、深度deepin-linux操作系統(tǒng)、python3.8和微軟vscode編輯器。
2 安裝:
=====
pip install cocos2d
#本機(jī)安裝
#sudo pip3.8 install cocos2d #太慢了
#sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple cocos2d #超快,推薦國內(nèi)源安裝
3 官網(wǎng):
=====
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 代碼:
#注意導(dǎo)出模塊是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 #默認(rèn)窗口大小的一半,就是中心位置
# 獲得主窗口的寬度和高度,是一個(gè)二元組
width, height = cocos.director.director.get_window_size()
# 設(shè)置標(biāo)簽的位置
label.position = width // 2, height // 2 # //整數(shù)除法 去掉小數(shù)部分
self.add(label)
if __name__ == "__main__":
#cocos.director.director.init() #默認(rèn)窗口大小
#cocos.director.director.init(width=640,height=480,caption="hello world")
#自定義窗口大小和標(biāo)題
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函數(shù)問題,采用默認(rèn)設(shè)置,代碼如下:
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函數(shù)問題
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 說明:對(duì)圖片格式進(jìn)行測試和播放音樂格式進(jìn)行測試,注釋里有。
5.2 代碼一:
import cocos
#下面2個(gè)模塊必須導(dǎo)出
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()
# 創(chuàng)建背景精靈,圖片格式,images文件夾與本代碼在同一個(gè)目錄下
#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') #報(bào)錯(cuò)
#background = cocos.sprite.Sprite('images/yytd.gif') #報(bào)錯(cuò)
background.position = d_width // 2, d_height // 2
self.add(background)
if __name__=='__main__':
#指定背景音樂后臺(tái) 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())#報(bào)錯(cuò),還有指定路徑,這與圖片默認(rèn)路徑不一樣
music.load('/home/xgj/Desktop/Cocos2d/coex/sound/sn.mp3'.encode())
music.play(loops=-1) #播放 循環(huán)次數(shù)
music.set_volume(1)#聲音大小
cocos.director.director.run(main_scence)
5.2 代碼二:高級(jí)一些,文字label和圖片sprite縮放和旋轉(zhuǎn),加上背景音樂。
import cocos
from cocos.actions import *
class Hello_world(cocos.layer.ColorLayer):
def __init__(self):
#設(shè)置背景屬性
super(Hello_world, self).__init__(64,64,224,255)
#設(shè)置標(biāo)簽屬性
label = cocos.text.Label('hello world',
font_name = 'Times New Roman',font_size = 32,
anchor_x = 'center',anchor_y = 'center')
#設(shè)置標(biāo)簽位置
label.position = 600,200 #建議窗口大小的一半,是居中
#添加標(biāo)簽到層
self.add(label)
#創(chuàng)建精靈,并配置精靈屬性,圖片的文件夾images與代碼在同一個(gè)目錄下
man_sprite = cocos.sprite.Sprite("images/bg.jpeg")
man_sprite.position = 600,500
#設(shè)置精靈顯示大小
man_sprite.scale =0.8
#添加精靈到層中
self.add(man_sprite,z = 1,name='man')
#使用動(dòng)作方法函數(shù),在3秒鐘里縮放3次
scale = ScaleBy(3,duration=3)
#標(biāo)簽重復(fù)以上動(dòng)作+旋轉(zhuǎn)
label.do(Repeat(scale+Reverse(scale)))
#精靈重復(fù) 旋轉(zhuǎn)+縮放動(dòng)作
man_sprite.do(Repeat(Reverse(scale)+scale))
#cocos.director.director.init() #默認(rèn)的
#---add,加背景音樂的設(shè)置如下---
cocos.director.director.init(width=1200,height=800,audio_backend='sdl')
from cocos.scenes.transitions import * #包在此處導(dǎo)入,是便于學(xué)習(xí)
from cocos.audio.pygame import music #一般包是放在第一步
music.load('/home/xgj/Desktop/Cocos2d/coex/sound/sn.mp3'.encode()) #背景音樂文件需要指定路徑,區(qū)別
music.play(loops=-1) #播放 循環(huán)次數(shù)
music.set_volume(1)#聲音大小
#---add,加背景音樂如上---
main_layer = Hello_world()
#該圖層在10秒鐘內(nèi)旋轉(zhuǎn)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()
# 創(chuàng)建背景精靈
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__()
# 也可以改變圖片項(xiàng)的大小
# 改變字體
self.font_item['font_size'] = 66
# 選中時(shí)
self.font_item_selected['font_size'] = 66
#改變顏色 rgba
self.font_item['color'] = (255,255,255,25)
# 選中時(shí)
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)
#創(chuàng)建菜單(添加項(xiàng)的列表,自定義布局位置)
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())
#定義播放按鈕功能設(shè)置
def menu_start_callback(self):
#注意播放wav與mp3一樣,需要指定具體路徑和目錄,否則報(bào)錯(cuò)
yinxiao=Effect('/home/xgj/Desktop/Cocos2d/coex/sound/dd.wav') #音效
#yinxiao=Effect('sound/dd.wav') # 報(bào)錯(cuò)
yinxiao.play()
def menu_help_callback(self):
pass
def menu_setting_callback(self):
pass
if __name__=='__main__':
#初始化導(dǎo)演
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) # 播放 循環(huán)次數(shù)
music.set_volume(1) # 聲音大小
#啟動(dòng)場景
cocos.director.director.run(main_scence)
6.2 效果圖:
在這基礎(chǔ)上去做一個(gè)音樂播放器是很有動(dòng)感的?。?/p>
7 圓形球動(dòng)感:
===========
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__()
#導(dǎo)入圖片image需要導(dǎo)入pyglet包,注意圖片與代碼文件在一個(gè)目錄下即可
self.image = pyglet.resource.image('flag.png')
#self.image = pyglet.resource.image('yytd.gif') #雖然能顯示,但是不是gif那樣的動(dòng)感
def draw(self):
self.image.blit(0, 0)
if __name__ == "__main__":
#主窗口可調(diào)節(jié)大小
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 官網(wǎng)代碼效果圖,代碼省略。
===是不是入門了,很簡單===
喜歡就點(diǎn)贊、關(guān)注、轉(zhuǎn)發(fā)和收藏。
中文文檔太少了,做一點(diǎn)貢獻(xiàn)。
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)漫建模全過程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動(dòng)畫軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫軟件或動(dòng)畫工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫的軟件程序。但是,在3D動(dòng)畫軟件中還包含了其他類型的...
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來應(yīng)該導(dǎo)入此項(xiàng)目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!