软件工程个人作业二
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | 2024秋软件工程个人作业(第二次) - 作业 - 软件工程2024 - 班级博客 - 博客园 (cnblogs.com) |
这个作业的目标 | 熟悉并掌握使用AIGC开发小游戏,同时对小游戏开发有一个大致基础 |
学号 | 042201520 |
项目名称:chiikawa消除游戏
github项目代码及图片文件:D0ub1etake/D0ub1etake at chiikawa-game-v1.0 (github.com)
一、游戏前端设计:
- 采用简约可爱的chiikawa中的动漫角色为画面主题,以浅色调为主
二、游戏演示与特色功能
游戏主菜单为开始游戏和退出游戏两个选项
点击开始游戏后会出现难度选项,不同难度下的时间限制和基础得分有所不同
点击相同图片即可消除,当同一位置的图片消除三次时,该位置的图片便不再生成,每消除一对图片加10分
游戏结束后显示总得分,并且提供再来一次和退出游戏的选项
三、使用的技术和特殊的算法
1.Pygame事件处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
# 处理鼠标点击事件
2.随机图案选择:
patterns = [pygame.image.load(f"pattern_{i}.jpg") for i in range(1, 10)]
patterns = [pygame.transform.scale(p, (TILE_SIZE, TILE_SIZE)) for p in patterns]
board[row][col] = random.choice(patterns)
3.检查匹配和消除算法(同一位置的图案最多消除三次)
def check_match():
if len(selected) == 2:
r1, c1 = selected[0]
r2, c2 = selected[1]
if board[r1][c1] == board[r2][c2] and eliminate_count[r1][c1] < 3 and eliminate_count[r2][c2] < 3:
eliminate_count[r1][c1] += 1
eliminate_count[r2][c2] += 1
board[r1][c1] = None
board[r2][c2] = None
score += 10
selected.clear()
4.游戏状态管理:
if game_state == 'menu':
# 显示菜单
elif game_state == 'playing':
# 进行游戏
elif game_state == 'game_over':
# 显示游戏结束界面
这些技术和算法共同构成了游戏的核心机制,使得游戏能够运行并提供玩家交互。
四、测试
点击开始游戏
选择难度
游戏过程
倒计时结束,跳转结束界面与最终得分
所有功能均正常运行,未发现bug
五、AIGC
AIGC表格:
学到的内容 | 内容描述 | 心得体会 |
---|---|---|
项目概览与规划 | 对项目需求有一个大致的了解,同时规划好时间完成项目 | 对项目的难度稍微有些低估了,特别是在没有系统性学习pygame库的情况下,尽早开始项目,留足时间对项目进行完善和修改 |
调试和修改 | 不断调试修改代码直至符合需求 | 对代码的反复调试,发现许多功能看似简单实则难以实现,打铁还需自身硬 |
项目模型的选择 | 使用迭代和增量模型 | 先完成主要的消除功能,再在主要功能的基础上添加图案多层填充以及各种界面的设置、难度选择、时间限制和得分机制 |
AIGC的运用 | 结合自身代码能力与AI共同完成项目 | 60%代码由AI生成,我主要负责算法和需求的对接和编写,同时对图片的载入和显示大部分由我来完成,很好的运用了AIGC |
项目的测试 | 反复游玩游戏直至未发现bug | 通过反复游玩解决了大部分的bug,同时也明白了项目测试的重要性,只有自己甚至更多人去尝试才能让项目趋近于完善 |
六、PSP表格
PSP | 预估耗时(min) | 实际耗时(min) |
---|---|---|
项目需求了解与规划 | 30 | 41 |
选择合适的模型 | 20 | 12 |
项目准备工作 | 30 | 33 |
开发项目 | 180 | 300 |
调试和修改 | 60 | 120 |
项目测试与调整 | 60 | 50 |
复盘与总结 | 30 | 42 |
体会撰写 | 20 | 30 |
总结与体会:在追求功能多样化的时候忽略了对主要功能的调试,对时间的规划稍有不妥,同时对pygame库的不熟悉,以至于最后反复调试代码未能完成更多的附加项目,希望在之后能学习中能更加认真的对待每一次作业、补足自身缺陷和遗憾,同时也是第一次与AI共同挑战完成游戏制作,虽然成品比较一般,但是仍有不错的成就感,我在github中特意标明了版本号,希望在以后能够更新版本,直至我满意为止。