软件工程第二次作业

一箭又一箭小游戏开发实践

博客开头信息

项目 内容
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/16717
这个作业的目标 使用 Python 和 AIGC 完成“一箭又一箭”小游戏,实现游戏设计、程序开发、测试以及项目文档整理
学号 102401435
GitHub 仓库 https://github.com/1530017982/ArrowGame

项目介绍

项目名称: 一箭又一箭小游戏

开发语言: Python

开发框架: Pygame

开发工具: Visual Studio Code

项目类型: 2D 益智小游戏

项目地址

GitHub:

https://github.com/1530017982/ArrowGame


一、项目简介

本项目使用 Python 和 Pygame 开发,实现了一款类似“一箭又一箭”的点击式解谜小游戏。

玩家需要观察棋盘中箭头的方向,判断箭头前方是否存在阻挡,并选择正确的箭头进行消除。

游戏包含:

  • 多个关卡
  • 箭头移动检测
  • 碰撞判断
  • 错误反馈
  • 失败界面
  • 重新开始
  • 撤销操作

通过完成关卡,提高玩家的观察能力和逻辑判断能力。


二、游戏展示

1. 开始界面

开始界面
start

游戏启动后进入开始界面。

主要功能:

  • 初始化游戏窗口
  • 加载资源
  • 初始化游戏数据
  • 等待玩家开始

2. 游戏界面

游戏界面
game

游戏界面显示:

  • 当前关卡
  • 剩余箭头数量
  • 剩余错误次数
  • 重新开始按钮
  • 撤销按钮

玩家点击箭头进行操作。


3. 胜利界面

胜利界面

win

当所有箭头成功消除后:

  • 当前关卡完成
  • 自动进入下一关
  • 重新生成新的箭头布局

4. 失败界面

失败界面

restart

当错误次数耗尽:

  • 游戏结束
  • 显示失败界面
  • 玩家可以重新开始

三、开发环境

软件环境

软件 版本
Python 3.10+
Pygame 2.x
Visual Studio Code 最新版

安装依赖

pip install pygame

运行:

python main.py

四、游戏设计

1. 游戏流程

开始界面

    ↓

进入游戏

    ↓

点击箭头

    ↓

判断是否阻挡

    ↓

成功 → 消除箭头

失败 → 错误次数减少

    ↓

全部完成

    ↓

进入下一关

五、程序实现

1. 游戏对象设计

每个箭头包含:

  • 坐标位置
  • 移动方向
  • 存活状态
  • 动画状态

例如:

arrow = {
    "x":100,
    "y":200,
    "direction":"right"
}

2. 箭头碰撞检测

点击箭头后,程序会根据箭头方向检测前方区域。

向右箭头

检测右侧是否存在箭头。

向左箭头

检测左侧是否存在箭头。

向上箭头

检测上方是否存在箭头。

向下箭头

检测下方是否存在箭头。

如果检测到阻挡:

  • 箭头无法消除
  • 播放碰撞反馈
  • 错误次数减少

如果没有阻挡:

  • 箭头消失
  • 剩余数量减少

六、撤销功能实现

为了提高游戏体验,增加了撤销功能。

实现思路

每次玩家操作前保存当前状态:

保存内容:

  • 箭头列表
  • 错误次数
  • 游戏状态

示例:

history.append(state)

点击撤销按钮:

undo()

恢复上一状态。


七、游戏状态管理

游戏主要包含以下状态:

start
game
success
fail

分别对应:

状态 功能
start 开始界面
game 游戏界面
success 胜利界面
fail 失败界面

通过状态切换实现不同页面显示。


八、AIGC辅助开发过程

1. 游戏框架设计

使用 ChatGPT 辅助:

  • 分析项目结构
  • 设计游戏流程
  • 生成基础代码框架

2. 功能开发

AI帮助完成:

  • 箭头对象设计
  • 碰撞检测逻辑
  • 游戏状态管理
  • 撤销功能设计

3. Bug调试

开发过程中遇到:

  • Git提交冲突
  • 图片路径错误
  • 变量未定义
  • 游戏逻辑错误

通过分析错误信息:

逐步修改程序,最终完成稳定版本。


九、项目测试

测试编号 测试内容 测试结果
T01 游戏启动 通过
T02 开始界面显示 通过
T03 点击箭头功能 通过
T04 碰撞检测 通过
T05 错误反馈 通过
T06 关卡切换 通过
T07 失败界面 通过
T08 撤销功能 通过

十、PSP项目记录

阶段 预计时间 实际时间
需求分析 1小时 1小时
Pygame学习 2小时 2.5小时
界面设计 3小时 3小时
游戏逻辑开发 3小时 3.5小时
测试修改 2小时 2.5小时
文档整理 3小时 3小时

十一、开发总结

通过本次项目开发,我学习了使用 Python 和 Pygame 完成完整小游戏的方法。

主要收获:

  • 掌握 Pygame 游戏循环设计
  • 学习鼠标事件处理
  • 理解碰撞检测算法
  • 掌握游戏状态管理
  • 学会使用 Git 进行版本控制

同时,在开发过程中使用 AIGC 工具辅助:

  • 提高开发效率
  • 快速定位问题
  • 优化程序结构

但是 AI 生成代码仍需要结合实际运行情况进行测试和修改。

最终完成了一款具有:

  • 多关卡
  • 箭头检测
  • 动画反馈
  • 撤销功能

的完整小游戏项目。


Thanks

感谢老师指导。

感谢 ChatGPT 在项目设计、代码分析和调试过程中的辅助。

posted @ 2026-09-21 14:41  乔震宇  阅读(11)  评论(0)    收藏  举报