最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python干貨實(shí)戰(zhàn)之八音符醬小游戲全過(guò)程詳解

 更新時(shí)間:2021年10月23日 15:46:28   作者:顧木子吖  
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)一個(gè)八音符醬小游戲,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平

導(dǎo)語(yǔ)🎼

嗨,大寶貝們,又到周末啦,今天你放假了嘛?

周末的日子總是無(wú)所事事,無(wú)所事事。一直在想做什么游戲,給大家來(lái)點(diǎn)兒新鮮感,這不?

玩游戲、找游戲、找素材、寫(xiě)代碼,大家聽(tīng)說(shuō)過(guò)這個(gè)游戲嘛?

聲控2D動(dòng)作小游戲它的名字叫做《不要停下來(lái)!八分音符醬♪》!

今天就來(lái)給大家肝一個(gè)仿八音符小游戲!

這款游戲需要操作者發(fā)聲來(lái)控制人物,同時(shí)還得掌握好聲音的力度...偷偷玩.jpg

操作起來(lái)全都靠吼,走位全都靠音調(diào),再多騷操作都無(wú)用,小編只能勸告大家,不要在晚上玩,大概會(huì)被鄰居誤會(huì)吧~

正文🎼

🎵一、準(zhǔn)備中

1.1 游戲規(guī)則🎶

不同于以往電腦鍵盤(pán)操作,亦不同于網(wǎng)絡(luò)手游觸屏操作,這款游戲的操作方法竟然是聲音。

玩家可以通過(guò)調(diào)整聲音的大小來(lái)控制音符醬的跳躍。簡(jiǎn)單來(lái)說(shuō)。聲音越大,音符醬跳的越高。

如果只發(fā)出微弱的聲音, 音符醬就只會(huì)緩慢的移動(dòng)。是不是超級(jí)有意思!

1.2 素材圖片🎶

🎵二、環(huán)境

2.1 小介紹🎶

Cocos2d模塊:

Cocos2d是一個(gè)用于構(gòu)建2D游戲、演示和其他圖形/交互應(yīng)用程序的框架。

它可以在Windows、OSX和Linux上工作,它可以供用python語(yǔ)言編寫(xiě)的應(yīng)用程序使用。

Pyaudio模塊:

Pyaudio庫(kù),使用這個(gè)可以進(jìn)行錄音,播放,生成wav文件等等。PyAudio 提供了 PortAudio

的 Python 語(yǔ)言版本,這是一個(gè)跨平臺(tái)的音頻 I/O 庫(kù),使用 PyAudio 你可以在 Python 程

序中播放和錄制音頻。為PoTaTudio提供Python綁定,跨平臺(tái)音頻I/O庫(kù)。使用PyAudio,您可

以輕松地使用Python在各種平臺(tái)上播放和錄制音頻,例如GNU/Linux、微軟Windows和蘋(píng)果Mac

OS X/MACOS。

2.2 配置環(huán)境🎶

本文涉及環(huán)境:Python3、Pycharm、cocos2d模塊;pyaudio模塊;以及一些Python自帶的模塊。

模塊安裝:

pip install +模塊名 或帶豆瓣鏡像源 pip install -i https://pypi.douban.com/simple/ +模塊名

🎵三、正式敲代碼

3.1 定義小黑八音符類:🎶

利用cocos2d模塊來(lái)定義主角類是一件非常輕松的事情。你只需要繼承sprites類,然后告訴sprites

類需要執(zhí)行什么操作即可。根據(jù)八音符的游戲規(guī)則,我們賦予小黑跳躍、下降和靜止的能力,同

時(shí),我們規(guī)定小黑在空中時(shí)無(wú)法進(jìn)行跳躍。具體代碼如下:

import cocos
 
 
'''小黑類'''
class Pikachu(cocos.sprite.Sprite):
    def __init__(self, imagepath, **kwargs):
        super(Pikachu, self).__init__(imagepath)
        # 錨點(diǎn)
        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

3.2 定義block類:🎶

初始化界面小黑要有一段站立的地方,對(duì)于地面,剛開(kāi)始的時(shí)候先得有一段長(zhǎng)點(diǎn)的平地緩沖一下,

讓玩家先試試自己的嗓音,然后再隨機(jī)生成跳躍塊,讓玩家展示自己的歌喉。

具體代碼如下:

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

3.3 實(shí)現(xiàn)游戲主循環(huán):🎶

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)
    '''碰撞檢測(cè)'''
    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
    '''定義游戲規(guī)則'''
    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)
        # 碰撞檢測(cè)
        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()))

🎵四、效果展示

總結(jié)🎼

今天的木木子呢,也試玩了一下這個(gè)八分音符醬,因?yàn)槭菍?shí)在害怕同事會(huì)打我,所以就回家錄了一下。沒(méi)能通關(guān),也沒(méi)辦法這個(gè)游戲?qū)嵲诓皇俏夷荞{馭的,玩了幾局嗓子就要開(kāi)始冒煙了~在這提醒好奇心比較強(qiáng)的寶寶們,一定不要在宿舍,夜晚,玩這個(gè)聲控小游戲。否則,真的可能會(huì)被打??!

好啦,到這里就結(jié)束了,想玩的小伙伴兒可以偷偷在家里玩兒,記得小聲點(diǎn)兒哈~🤫

到此這篇關(guān)于Python干貨實(shí)戰(zhàn)之八音符醬小游戲全過(guò)程詳解的文章就介紹到這了,更多相關(guān)Python 小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python Django連接MySQL數(shù)據(jù)庫(kù)做增刪改查

    python Django連接MySQL數(shù)據(jù)庫(kù)做增刪改查

    本文寫(xiě)的是python Django連接MySQL數(shù)據(jù)庫(kù)的步驟,提供增刪改查的代碼
    2013-11-11
  • Python+Selenium鍵盤(pán)鼠標(biāo)模擬事件操作詳解

    Python+Selenium鍵盤(pán)鼠標(biāo)模擬事件操作詳解

    這篇文章主要帶大家一起學(xué)習(xí)一下Selenium的元素的基本操作與鼠標(biāo)鍵盤(pán)模擬事件的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-06-06
  • python2和python3哪個(gè)使用率高

    python2和python3哪個(gè)使用率高

    在本篇文章里小編給大家分享的是一篇關(guān)于python2和python3哪個(gè)使用率高的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)參考下。
    2020-06-06
  • python和bash統(tǒng)計(jì)CPU利用率的方法

    python和bash統(tǒng)計(jì)CPU利用率的方法

    這篇文章主要介紹了python和bash統(tǒng)計(jì)CPU利用率的方法,涉及Python針對(duì)系統(tǒng)硬件信息的讀取技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • django連接mysql數(shù)據(jù)庫(kù)及建表操作實(shí)例詳解

    django連接mysql數(shù)據(jù)庫(kù)及建表操作實(shí)例詳解

    這篇文章主要介紹了django連接mysql數(shù)據(jù)庫(kù)及建表操作,結(jié)合實(shí)例形式詳細(xì)分析了Django框架連接mysql數(shù)據(jù)庫(kù)、創(chuàng)建與查詢數(shù)據(jù)表相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • 用 Django 開(kāi)發(fā)一個(gè) Python Web API的方法步驟

    用 Django 開(kāi)發(fā)一個(gè) Python Web API的方法步驟

    這篇文章主要介紹了用 Django 開(kāi)發(fā)一個(gè) Python Web API的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python pandas模塊基礎(chǔ)學(xué)習(xí)詳解

    python pandas模塊基礎(chǔ)學(xué)習(xí)詳解

    這篇文章主要介紹了python pandas模塊基礎(chǔ)學(xué)習(xí)詳解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python MySQLdb使用教程詳解

    python MySQLdb使用教程詳解

    本文主要內(nèi)容python MySQLdb數(shù)據(jù)庫(kù)批量插入insert,更新update的相關(guān)知識(shí),感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • Python使用googletrans報(bào)錯(cuò)的解決方法

    Python使用googletrans報(bào)錯(cuò)的解決方法

    這篇文章主要給大家介紹了關(guān)于Python使用googletrans報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • python壓縮文件夾內(nèi)所有文件為zip文件的方法

    python壓縮文件夾內(nèi)所有文件為zip文件的方法

    這篇文章主要介紹了python壓縮文件夾內(nèi)所有文件為zip文件的方法,可實(shí)現(xiàn)簡(jiǎn)單的zip文件壓縮功能,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

巩义市| 永吉县| 黄龙县| 禹城市| 昌乐县| 灵台县| 军事| 和顺县| 井陉县| 二手房| 都兰县| 武乡县| 兴海县| 宜章县| 宜宾县| 新邵县| 蛟河市| 元朗区| 广东省| 凉城县| 靖边县| 周宁县| 甘孜| 启东市| 潞西市| 高青县| 时尚| 宜春市| 区。| 同江市| 西畴县| 根河市| 鄂州市| 屯门区| 廊坊市| 德兴市| 合山市| 巴里| 新丰县| 常山县| 安仁县|