Skip to content

chemark/alien-invasion

Repository files navigation

外星人入侵 (Alien Invasion)

一个基于《Python编程从入门到实践》第3版开发的经典 Pygame 游戏。

Python Pygame License

📖 项目简介

《外星人入侵》是一个经典的射击游戏,玩家控制一艘飞船在屏幕底部射击从顶部下降的外星人。这个项目展示了 Pygame 游戏开发的核心概念,包括精灵管理、碰撞检测、事件处理等。

🎮 游戏特性

  • 流畅的游戏操作 - 响应式的键盘控制和鼠标点击
  • 碰撞检测系统 - 精确的子弹、飞船和外星人碰撞检测
  • 动态难度 - 随着关卡提升,外星人速度和数量增加
  • 计分系统 - 实时得分显示和最高分记录
  • 多关卡设计 - 消灭所有外星人后自动进入下一关卡
  • 生命值系统 - 飞船有多条生命,被击中时失去一条生命
  • 图形界面 - 直观的游戏界面和记分牌显示

🕹️ 游戏控制

操作 按键
向左移动 ← (LEFT)
向右移动 → (RIGHT)
发射子弹 SPACE
开始游戏 点击 "Play" 按钮
退出游戏 Q 或关闭窗口

🚀 快速开始

环境要求

  • Python 3.10+
  • pygame 2.0+

安装步骤

  1. 克隆仓库
git clone https://github.com/chemark/alien-invasion.git
cd alien-invasion
  1. 创建虚拟环境(可选但推荐)
python -m venv venv
source venv/bin/activate  # macOS/Linux
#
venv\Scripts\activate     # Windows
  1. 安装依赖
pip install -r requirements.txt
  1. 运行游戏
python alien_invasion.py

📁 项目结构

alien_invasion/
├── alien_invasion.py       # 主游戏入口和游戏逻辑
├── settings.py             # 游戏配置和常量设置
├── game_stats.py           # 游戏统计信息(得分、生命值等)
├── ship.py                 # 飞船类(玩家控制的角色)
├── bullet.py               # 子弹类(飞船发射的武器)
├── alien.py                # 外星人类(敌人)
├── button.py               # UI按钮类(游戏开始按钮)
├── scoreboard.py           # 记分牌类(显示游戏信息)
├── requirements.txt        # Python 依赖列表
├── images/                 # 游戏资源文件夹
│   ├── ship.bmp           # 飞船图片
│   ├── alien.bmp          # 外星人图片
│   └── ...                # 其他资源
├── cline/                  # 开发文档
│   ├── 错误分析报告.md     # 技术问题分析
│   ├── 外星人入侵游戏开发计划.md
│   └── ...                # 其他文档
└── README.md              # 本文件

💻 核心类说明

AlienInvasion

主游戏类,负责:

  • 游戏初始化和主循环
  • 事件处理(键盘、鼠标)
  • 游戏对象更新和绘制
  • 碰撞检测和游戏逻辑

Ship

飞船类,负责:

  • 飞船位置和图像管理
  • 左右移动控制
  • 屏幕边界碰撞检测
  • 飞船绘制

Bullet

子弹类,负责:

  • 子弹位置和速度
  • 屏幕外子弹移除
  • 子弹数量限制管理

Alien

外星人类,负责:

  • 外星人位置和移动
  • 屏幕边缘检测
  • 编队管理
  • 速度管理

Scoreboard

记分牌类,负责:

  • 得分显示
  • 最高分记录
  • 关卡显示
  • 剩余飞船数显示

🔧 技术栈

  • 游戏引擎:Pygame 2.6.1
  • 编程语言:Python 3.13.2
  • 版本控制:Git
  • 类型检查:Pylance/Pyright

📊 游戏截图和演示

(可在运行游戏时体验)

🎓 学习要点

这个项目展示了以下 Python 和游戏开发的重要概念:

  1. 面向对象编程 - 使用类和对象组织游戏代码
  2. Pygame 精灵系统 - 精灵类和精灵组的使用
  3. 事件处理 - 键盘和鼠标事件处理
  4. 碰撞检测 - 多种碰撞检测算法的应用
  5. 游戏循环 - 典型的游戏主循环结构
  6. 文件 I/O - 图片加载和数据持久化
  7. 性能优化 - 帧率控制和精灵管理

🐛 已知问题和解决方案

项目开发过程中遇到的技术问题已记录在 cline/ 文件夹中:

  • Sprite 初始化问题 - 见 错误分析报告.md
  • RGB 颜色值范围 - 见 最终解决方案总结.md
  • 循环导入分析 - 见 pygame_circular_import_analysis.md

📈 开发进度

  • 游戏架构设计
  • 飞船和射击系统
  • 外星人系统
  • 碰撞检测
  • 计分系统
  • UI 界面
  • 难度调整
  • 音效(未来扩展)
  • 高分排行榜(未来扩展)
  • 多关卡设计(未来扩展)

🚀 未来改进

  1. 视觉效果

    • 添加爆炸动画
    • 添加粒子效果
    • 能量道具系统
  2. 音效系统

    • 背景音乐
    • 射击声效
    • 碰撞声效
  3. 游戏玩法

    • 暂停功能
    • 设置菜单
    • 多难度等级
  4. 高级功能

    • 在线排行榜
    • 游戏存档
    • Boss 敌人

📝 许可证

MIT License - 详见 LICENSE 文件

📚 参考资源

👤 作者

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

🌟 致谢

感谢 Eric Matthes 的《Python Crash Course》教材,这是学习 Python 和游戏开发的优秀资源。


最后更新: 2025年12月5日

状态: ✅ 游戏可玩,所有核心功能正常运行

当前版本: 1.0.0

About

Alien Invasion game built with Python and Pygame from 'Python Crash Course' 3rd Edition

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages