当前位置: 首页 > news >正文

躲避巨石游戏 · Python版

躲避巨石游戏 · Python版(带角色选择系统)

📖 游戏简介

《躲避巨石》是一款快节奏的街机风格小游戏,玩家控制一个角色,在场景中不断躲避从上方或侧面落下的巨石。每成功避开一块巨石,得分增加;一旦被砸中,生命值减少,若生命耗尽则游戏结束。
本版本最大的特色是角色选择系统—— 玩家可以从多个不同外观、属性(速度、体积、特殊技能)的角色中挑选,体验不同的生存策略。


🎮 游戏核心玩法

  • 玩家通过键盘(方向键或 WASD)控制角色移动。

  • 巨石从屏幕顶部(或随机边缘)生成,以不同的速度下落或滚动。

  • 玩家必须避开所有巨石,坚持时间越久,巨石生成速度越快、数量越多。

  • 屏幕上方显示:当前得分、剩余生命、所选角色名称。

  • 碰撞检测采用矩形碰撞(或圆形碰撞),保证精准度。

  • 当生命归零时,显示最终得分,并提供“重新开始”和“更换角色”的选项。


👥 角色选择系统(特色亮点)

在游戏开始前或暂停时,玩家可以进入角色选择界面。角色数据存储在字典或类中,每个角色不同特性

角色选择界面实现思路(Pygame)

  • 横向滚动列表,显示角色头像、名称、简要属性。

  • 玩家用左右方向键选择,按回车确认。

  • 选择后返回主游戏场景,角色的速度、尺寸、技能函数被动态加载到游戏主循环中。


🕹️ 控制方式

按键功能
↑ / W向上移动
↓ / S向下移动
← / A向左移动
→ / D向右移动
ESC暂停 / 呼出角色选择菜单
R游戏结束时重新开始(保持当前角色)

❤️ 生命与得分系统

  • 基础得分:每躲避一块巨石 +10 分


🧱 技术实现

推荐库

  • Pygame:最常用的 Python 游戏库,适合 2D 小游戏开发。

核心代码模块结构

text

dodge_rocks/ ├── main.py # 游戏入口,包含主循环、事件处理 ├── player.py # 玩家角色类,包含移动、碰撞检测、技能 ├── rock.py # 巨石类,生成、移动、重绘 ├── game_state.py # 游戏状态管理(运行中、暂停、角色选择、结束) ├── character_data.py # 角色数据列表及加载函数 └── assets/ # 图片、字体、音效资源

关键代码片段(示意)

python

# character_data.py CHARACTERS = { "miner": { "name": "矿工", "color": (255, 200, 100), "speed": 5, "size": (32, 32), "skill": "shield", "cooldown": 0, "skill_func": lambda player: player.activate_shield() }, "mage": {...}, # ... } # player.py class Player(pygame.sprite.Sprite): def __init__(self, char_key): super().__init__() data = CHARACTERS[char_key] self.image = pygame.Surface(data["size"]) self.image.fill(data["color"]) self.rect = self.image.get_rect() self.speed = data["speed"] self.skill = data["skill"] self.skill_cd = 0 # ... def use_skill(self): if self.skill_cd <= 0: # 执行技能逻辑 self.skill_cd = 60 # 冷却帧数

碰撞检测优化

  • 使用pygame.sprite.groupcollide()检测玩家与巨石组的碰撞。

  • 碰撞后调用player.hit()方法,根据角色特性减少生命,并重置无敌定时器。


🎨 画面与音效(可选增强)

  • 背景:渐变地面 + 简单山石纹理。

  • 巨石:从圆形到多边形随机形状,带阴影。

  • 音效:跳跃/移动声、碰撞音、得分提示音、技能使用音。

  • 屏幕震动:被撞时轻微晃动增强反馈。


🧪 扩展想法

  • 多人模式:两名玩家各自控制角色,在同一场地躲避(互相碰撞无影响,但会增加紧张感)。

  • 本地排行榜:记录最高分数和所用角色。

  • 道具系统:偶尔掉落加速鞋、缩小药水、吸引磁铁(吸走巨石)。

  • 难度曲线:巨石不仅下落,还会弹跳或追踪玩家(高级挑战模式)。


✅ 下载

https://download.csdn.net/download/suny8/92952037?spm=1001.2014.3001.5503

http://www.jsqmd.com/news/971736/

相关文章:

  • 告别phpMyAdmin!一个Docker容器搞定MySQL、PostgreSQL、MongoDB,Adminer保姆级安装与多数据库连接实战
  • 学了Spring AI Graph再看LangGraph,发现API几乎一模一样
  • 电力工程师必看:手把手教你用Python解析COMTRADE文件(含CFG/DAT文件实战)
  • 从MATLAB到C语言:手把手教你实现db4小波四层分解与重构(附完整代码)
  • TVA为什么是企业智能化升级的战略支点(13)
  • 全场景提效!职场人导航覆盖程序员开发+职场办公所有需求
  • 2026年东莞知识产权诉讼律师推荐:5位实战经验丰富的专才 - 本地品牌推荐
  • 从‘黑盒’到‘白盒’:在金融风控和医疗诊断中,我们为什么必须给AI模型一个解释?
  • Windows 10/11 下用 Visual Studio 2019 编译 ZLMediaKit 流媒体服务,保姆级避坑指南
  • 2026年广州知识产权诉讼律师推荐 钟泽江双资质专业护航 - 本地品牌推荐
  • 2026年中山知识产权律师推荐指南:从灯饰照明到五金家电 - 本地品牌推荐
  • 2026年AI营销获客工具盘点:4大核心选型维度
  • 从停等协议到ARQ:手把手图解RDT协议如何一步步实现可靠数据传输(附状态机详解)
  • ESP32 I2C驱动OLED屏幕实战:从硬件接线到显示‘Hello World‘的完整流程
  • 如何3步解决机械键盘连击问题:Keyboard Chatter Blocker实战指南
  • opencv 5.0.0发布:从构建要求到DNN引擎、模块拆分、Python绑定,OpenCV 4升级5最全迁移指南
  • Empire 4.2监听器与后门生成实战:从HTTP到多种Stager的配置与免杀思路
  • 2026年武汉离婚律师推荐榜单:5位资深律师实战经验丰富 - 本地品牌推荐
  • 赤峰离婚纠纷解决太困难?2026年这5家离婚律师推荐 - 本地品牌推荐
  • 从‘能用’到‘好用’:Nsight Systems (nsys) 搭配CUDA Best Practices指南的优化实战
  • Android音频策略配置实战:手把手教你读懂audio_policy_configuration.xml(附源码解析)
  • 终极Bazzite游戏系统指南:如何在手持设备上获得最佳游戏体验
  • 告别卡顿与依赖错误:保姆级优化你的Unitree Go1 Nano主控开发环境(换源、网关、jtop监控全攻略)
  • 2026年深圳知识产权诉讼律师推荐榜单:5位深耕实务的实力派 - 本地品牌推荐
  • 告别杂乱报表!手把手教你为若依(RuoYi)前后端分离项目添加Excel智能合并行功能
  • KMS_VL_ALL_AIO:Windows与Office批量激活的终极技术方案
  • Jsxer:如何快速解码Adobe JSXBIN二进制脚本文件?
  • C语言企业项目实战(四)
  • 告别杂乱报表!手把手教你用若依框架定制个性化Excel导出(合并行实战)
  • FSDB文件太大导致Verdi卡死?试试这5个波形文件瘦身与性能优化技巧