<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
嗨,大寶貝們,又到週末啦,今天你放假了嘛?
週末的日子總是無所事事,無所事事。一直在想做什麼遊戲,給大家來點兒新鮮感,這不?
玩遊戲、找遊戲、找素材、寫程式碼,大家聽說過這個遊戲嘛?
聲控2D動作小遊戲它的名字叫做《不要停下來!八分音符醬♪》!
今天就來給大家肝一個仿八音符小遊戲!
這款遊戲需要操作者發聲來控制人物,同時還得掌握好聲音的力度...偷偷玩.jpg
操作起來全都靠吼,走位全都靠音調,再多騷操作都無用,小編只能勸告大家,不要在晚上玩,大概會被鄰居誤會吧~
不同於以往電腦鍵盤操作,亦不同於網路手遊觸屏操作,這款遊戲的操作方法竟然是聲音。
玩家可以通過調整聲音的大小來控制音符醬的跳躍。簡單來說。聲音越大,音符醬跳的越高。
如果只發出微弱的聲音, 音符醬就只會緩慢的移動。是不是超級有意思!
Cocos2d是一個用於構建2D遊戲、演示和其他圖形/互動應用程式的框架。
它可以在Windows、OSX和Linux上工作,它可以供用python語言編寫的應用程式使用。
Pyaudio庫,使用這個可以進行錄音,播放,生成wav檔案等等。PyAudio 提供了 PortAudio
的 Python 語言版本,這是一個跨平臺的音訊 I/O 庫,使用 PyAudio 你可以在 Python 程
序中播放和錄製音訊。為PoTaTudio提供Python繫結,跨平臺音訊I/O庫。使用PyAudio,您可
以輕鬆地使用Python在各種平臺上播放和錄製音訊,例如GNU/Linux、微軟Windows和蘋果Mac
OS X/MACOS。
本文涉及環境:Python3、Pycharm、cocos2d模組;pyaudio模組;以及一些Python自帶的模組。
模組安裝:
pip install +模組名 或帶豆瓣映象源 pip install -i https://pypi.douban.com/simple/ +模組名
利用cocos2d模組來定義主角類是一件非常輕鬆的事情。你只需要繼承sprites類,然後告訴sprites
類需要執行什麼操作即可。根據八音符的遊戲規則,我們賦予小黑跳躍、下降和靜止的能力,同
時,我們規定小黑在空中時無法進行跳躍。具體程式碼如下:
import cocos '''小黑類''' class Pikachu(cocos.sprite.Sprite): def __init__(self, imagepath, **kwargs): super(Pikachu, self).__init__(imagepath) # 錨點 self.image_anchor = 0, 0 # 初始重置 self.reset(False) # 更新 self.schedule(self.update) '''聲控跳躍''' def jump(self, h): if self.is_able_jump: self.y += 1 self.speed -= max(min(h, 10), 7) self.is_able_jump = False '''著陸後靜止''' def land(self, y): if self.y > y - 25: self.is_able_jump = True self.speed = 0 self.y = y '''更新(重力下降)''' def update(self, dt): self.speed += 10 * dt self.y -= self.speed if self.y < -85: self.reset() '''重置''' def reset(self, flag=True): if flag: self.parent.reset() # 是否可跳躍 self.is_able_jump = False # 速度 self.speed = 0 # 位置 self.position = 80, 280
初始化介面小黑要有一段站立的地方,對於地面,剛開始的時候先得有一段長點的平地緩衝一下,
讓玩家先試試自己的嗓音,然後再隨機生成跳躍塊,讓玩家展示自己的歌喉。
具體程式碼如下:
import cocos import random '''地面塊''' class Block(cocos.sprite.Sprite): def __init__(self, imagepath, position, **kwargs): super(Block, self).__init__(imagepath) self.image_anchor = 0, 0 x, y = position if x == 0: self.scale_x = 4.5 self.scale_y = 1 else: self.scale_x = 0.5 + random.random() * 1.5 self.scale_y = min(max(y - 50 + random.random() * 100, 50), 300) / 100.0 self.position = x + 50 + random.random() * 100, 0
import cfg import cocos import struct from modules import * from cocos.sprite import Sprite from pyaudio import PyAudio, paInt16 '''定義聲控遊戲類''' class VCGame(cocos.layer.ColorLayer): def __init__(self): super(VCGame, self).__init__(255, 255, 255, 255, 800, 600) # frames_per_buffer self.num_samples = 1000 # 聲控條 self.vbar = Sprite(cfg.BLOCK_IMAGE_PATH) self.vbar.position = 20, 450 self.vbar.scale_y = 0.1 self.vbar.image_anchor = 0, 0 self.add(self.vbar) # 皮卡丘 self.pikachu = Pikachu(cfg.PIKACHU_IMAGE_PATH) self.add(self.pikachu) # 地面 self.floor = cocos.cocosnode.CocosNode() self.add(self.floor) position = 0, 100 for i in range(120): b = Block(cfg.BLOCK_IMAGE_PATH, position) self.floor.add(b) position = b.x + b.width, b.height # 聲音輸入 audio = PyAudio() self.stream = audio.open(format=paInt16, channels=1, rate=int(audio.get_device_info_by_index(0)['defaultSampleRate']), input=True, frames_per_buffer=self.num_samples) # 螢幕更新 self.schedule(self.update) '''碰撞檢測''' def collide(self): diffx = self.pikachu.x - self.floor.x for b in self.floor.get_children(): if (b.x <= diffx + self.pikachu.width * 0.8) and (diffx + self.pikachu.width * 0.2 <= b.x + b.width): if self.pikachu.y < b.height: self.pikachu.land(b.height) break '''定義遊戲規則''' def update(self, dt): # 獲取每幀的音量 audio_data = self.stream.read(self.num_samples) k = max(struct.unpack('1000h', audio_data)) self.vbar.scale_x = k / 10000.0 if k > 3000: self.floor.x -= min((k / 20.0), 150) * dt # 皮卡丘跳躍 if k > 8000: self.pikachu.jump((k - 8000) / 1000.0) # 碰撞檢測 self.collide() '''重置''' def reset(self): self.floor.x = 0 '''run''' if __name__ == '__main__': cocos.director.director.init(caption="xiaohei Go Go Go ") cocos.director.director.run(cocos.scene.Scene(VCGame()))
今天的木木子呢,也試玩了一下這個八分音符醬,因為是實在害怕同事會打我,所以就回家錄了一下。沒能通關,也沒辦法這個遊戲實在不是我能駕馭的,玩了幾局嗓子就要開始冒煙了~在這提醒好奇心比較強的寶寶們,一定不要在宿舍,夜晚,玩這個聲控小遊戲。否則,真的可能會被打!!
好啦,到這裡就結束了,想玩的小夥伴兒可以偷偷在家裡玩兒,記得小聲點兒哈~🤫
到此這篇關於Python乾貨實戰之八音符醬小遊戲全過程詳解的文章就介紹到這了,更多相關Python 小遊戲內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45