# 🐍 Python 经典贪吃蛇游戏 一个使用 Python 和 Pygame 开发的经典贪吃蛇游戏,画面精美,操作简单有趣! ## ✨ 游戏特性 ### 🎮 核心玩法 - **经典规则** - 控制蛇移动,吃到食物变长 - **渐进难度** - 每吃 5 个食物速度加快 - **精美画面** - 现代化 UI 设计,蛇有眼睛动画 - **流畅操作** - 支持方向键和 WASD 双控制方案 ### 🎨 视觉效果 - 深蓝色背景 + 网格线 - 绿色蛇身,带眼睛动画 - 红色圆形食物,带高光和阴影 - 半透明游戏结束/暂停界面 - 实时分数和速度显示 ### 🎯 游戏功能 - 暂停/继续功能(P 键) - 游戏结束后快速重开(空格键) - 优雅退出(ESC 键) - 碰撞检测(墙壁和自己) - 速度系统(10-25 FPS) ## 📦 安装依赖 ```bash pip install -r game_requirements.txt ``` 或者单独安装: ```bash pip install pygame>=2.5.0 ``` ## 🚀 快速开始 ### 方法 1:运行启动文件 ```bash python play_game.py ``` ### 方法 2:直接运行游戏 ```bash python snake_game.py ``` ## 🎮 游戏操作 | 按键 | 功能 | |------|------| | ↑ / W | 向上移动 | | ↓ / S | 向下移动 | | ← / A | 向左移动 | | → / D | 向右移动 | | P | 暂停/继续游戏 | | 空格 | 游戏结束后重新开始 | | ESC | 退出游戏 | ## 📖 游戏规则 1. **目标** - 控制蛇吃到尽可能多的食物 2. **得分** - 每个食物 = 10 分 3. **加速** - 每吃 5 个食物(50 分),速度提升 2 档 4. **失败条件**: - 蛇头撞到墙壁 - 蛇头撞到自己的身体 5. **最大速度** - 25 FPS(初始速度 10 FPS) ## 🏆 技巧提示 ### 新手技巧 - 开始时速度较慢,熟悉操作 - 提前规划路线,不要急转弯 - 尽量保持在屏幕中央活动 ### 进阶技巧 - 利用墙壁反弹改变方向 - 预留足够的转弯空间 - 高速时小幅调整方向 - 观察蛇头眼睛判断方向 ### 高分策略 - 采用"之"字形路线清理食物 - 避免把自己逼入死角 - 保持蛇身紧凑,留出空间 - 后期以生存为主,不要贪心 ## 🎨 游戏画面 ``` ┌────────────────────────────────────────┐ │ Score: 120 Speed: 14 │ ├────────────────────────────────────────┤ │ │ │ ●●●●● (蛇) │ │ ● │ │ ● │ │ ●●●● │ │ ● │ │ ● 🍎 (食物) │ │ │ │ │ └────────────────────────────────────────┘ ``` ## 🔧 自定义配置 ### 修改窗口大小 编辑 `snake_game.py` 中的初始化参数: ```python game = SnakeGame(width=1000, height=800, cell_size=25) ``` ### 修改颜色 编辑 `snake_game.py` 中的颜色字典: ```python self.colors = { 'background': (15, 23, 42), # 背景色 'snake_head': (34, 197, 94), # 蛇头颜色 'snake_body': (22, 163, 74), # 蛇身颜色 'food': (239, 68, 68), # 食物颜色 # ... 更多颜色 } ``` ### 修改初始速度 ```python self.speed = 15 # 改为 15 FPS ``` ## 🐛 常见问题 ### Q: 游戏窗口打不开? A: 确保已安装 Pygame:`pip install pygame` ### Q: 按键没反应? A: 确保游戏窗口处于焦点状态,点击窗口后再操作 ### Q: 游戏太慢/太快? A: 修改 `self.speed = 10` 调整初始速度 ### Q: 想要更大/更小的蛇? A: 修改 `cell_size = 20` 调整格子大小 ## 🎯 扩展计划 - [ ] 添加音效和背景音乐 - [ ] 多种难度选择 - [ ] 排行榜系统 - [ ] 多种蛇皮肤 - [ ] 双人模式 - [ ] 特殊道具(加速、减速、穿墙) - [ ] 地图编辑器 - [ ] 录像回放功能 ## 💻 技术实现 ### 核心技术 - **Pygame** - 游戏引擎和渲染 - **网格系统** - 基于网格的移动和碰撞检测 - **队列数据结构** - 蛇身管理 - **事件驱动** - 键盘输入处理 ### 性能优化 - 只重绘变化的部分 - 使用矩形碰撞检测 - 帧率控制保证流畅性 ### 代码结构 ``` SnakeGame ├── __init__() # 初始化 ├── reset_game() # 重置游戏 ├── _generate_food() # 生成食物 ├── _handle_events() # 处理事件 ├── _update() # 更新状态 ├── _check_collision() # 碰撞检测 ├── _draw_grid() # 绘制网格 ├── _draw_snake() # 绘制蛇 ├── _draw_food() # 绘制食物 ├── _draw_score() # 绘制分数 ├── _draw_game_over() # 游戏结束画面 ├── _draw_paused() # 暂停画面 ├── draw() # 总绘制 └── run() # 主循环 ``` ## 📝 版本历史 ### v1.0.0 - ✅ 基础游戏功能 - ✅ 精美 UI 界面 - ✅ 蛇眼睛动画 - ✅ 暂停/继续功能 - ✅ 速度系统 - ✅ 碰撞检测 ## 🎓 学习价值 通过这个游戏可以学习: - Pygame 基础使用 - 游戏循环设计 - 碰撞检测算法 - 事件处理机制 - 面向对象编程 - 动画原理 ## 📄 许可证 MIT License ## 🎉 开始游戏 ```bash # 安装依赖 pip install -r game_requirements.txt # 运行游戏 python play_game.py ``` 祝你玩得开心!🐍🎮