【Python】-- 趣味代码 - Piano游戏

文章目录
文章目录
- 01 Piano游戏
- 02 Piano游戏代码分析
- 03 Piano游戏链接
01 Piano游戏
1.audios中是88个音频的wav文件
2.钢琴.png为背景图
3.pictures中为各个按键按下之后的图片
4.键盘zxcvbnm对应钢琴音c d e f g a b;asdfghj对应c1 d1 e1 f1 g1 a1 b1;qwertyu对应c2 d2 e 2 f2 g2 a2 b2.
02 Piano游戏代码分析
资源层
背景图 + 21 张琴键图(z…m、a…j、q…u、1)→ 视觉反馈。
./audios/ 目录存放单音 WAV,命名按十二平均律(c1…c3)→ 音源。
事件-音频路由
keyDict 字典完成 pygame 按键常量 → 音名 的映射。
每次 KEYDOWN 启动一个 threading.Thread 调用 play(),避免阻塞主循环,实现多音并发。
音频流
使用 pyaudio 按块(1024 samples)推送 WAV 数据到 DAC,播放完毕立即关闭流,资源占用极低。
渲染逻辑
KEYDOWN 瞬间把对应琴键图整张 blit 到窗口(0,0),覆盖背景;KEYUP 重新画回背景,形成“按下-弹起”动画。
生命周期 & 健壮性
主循环 100 Hz 轮询事件,ESC / 关闭窗口可干净退出;文件存在性 os.path.exists 防止崩溃。
03 Piano游戏链接
通过网盘分享的文件:piano_python-main.zip<
