笑到颤抖的小游戏《不要停下来,八音符酱》,边撕边吼边泪奔

笑到颤抖的小游戏《不要停下来,八音符酱》,边撕边吼边泪奔

首页休闲益智不要掉下来更新时间:2024-04-11
导语

嗨,大宝贝们,又到周末啦,今天你放假了嘛?

周末的日子总是无所事事,无所事事。一直在想做什么游戏,给大家来点儿新鲜感,这不?

玩游戏、找游戏、找素材、写代码,大家听说过这个游戏嘛?

声控2D动作小游戏它的名字叫做《不要停下来!八分音符酱♪》!

今天就来给大家肝一个仿八音符小游戏!

这款游戏需要操作者发声来控制人物,同时还得掌握好声音的力度...偷偷玩.jpg

操作起来全都靠吼,走位全都靠音调,再多*操作都无用,小编只能劝告大家,不要在晚上玩,大概会被邻居误会吧~

正文

一、准备中1.1 游戏规则

不同于以往电脑键盘操作,亦不同于网络手游触屏操作,这款游戏的操作方法竟然是声音。

玩家可以通过调整声音的大小来控制音符酱的跳跃。简单来说。声音越大,音符酱跳得越高。

如果只发出微弱的声音, 音符酱就只会缓慢地移动。是不是超级有意思!

1.2 素材图片

二、环境1.1 小介绍

Cocos2d模块

Cocos2d是一个用于构建2D游戏、演示和其他图形/交互应用程序的框架。 它可以在Windows、OSX和Linux上工作,它可以供用python语言编写的应用程序使用。

Pyaudio模块

Pyaudio库,使用这个可以进行录音,播放,生成wav文件等等。PyAudio 提供了 PortAudio 的 Python 语言版本,这是一个跨平台的音频 I/O 库,使用 PyAudio 你可以在 Python 程 序中播放和录制音频。为PoTaTudio提供Python绑定,跨平台音频I/O库。使用PyAudio,您可 以轻松地使用Python在各种平台上播放和录制音频,例如GNU/Linux、微软Windows和苹果Mac OS X/MACOS。

1.2 配置环境

本文涉及环境:Python3、Pycharm、cocos2d模块;pyaudio模块;以及一些Python自带的模块。

模块安装:

pip install 模块名 或带豆瓣镜像源 pip install -i https://pypi.douban.com/simple/ 模块名三、正式敲代码3.1 定义小黑八音符类:

利用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, 2803.2定义block类:

初始化界面小黑要有一段站立的地方,对于地面,刚开始的时候先得有一段长点的平地缓冲一下,

让玩家先试试自己的嗓音,然后再随机生成跳跃块,让玩家展示自己的歌喉。

具体代码如下:

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, 03.3实现游戏主循环:

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()))四、效果展示

总结

好啦,到这里就结束了,想玩的小伙伴儿可以偷偷在家里玩儿,记得小声点儿哈~

完整的免费源码领取处:

如需完整的项目源码 素材源码基地见:#私信小编06#即可获取免费的福利!

你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~

往期游戏文章推荐:

1.0 【Pygame实战】风靡全球的切水果游戏升级版“水果忍者”上线啦!你敢来PK吗?!

1.1Pygame实战:爆肝!几千行代码实现《机甲闯关冒险游戏》,太牛了!(❤️建议收藏起来慢慢学❤️)

1.1 Pygame实战:慎点|虐单身狗的最高境界是…【附源码】

1.2 Pygame实战:据说这是史上最难扫雷游戏,没有之一!你们感受下......

1.3 Pygame实战:对象突然想玩坦克大战,我用Python三十分钟实现!看!他开心得像个孩子!

文章汇总——

1.1Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了~

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved