软件工程课程第二次个人作业

这个作业属于哪个课程 软件工程2024
这个作业要求在哪里 2024秋软件工程个人作业(第二次)
这个作业的目标 完成游戏的基本功能和交互设计,熟练掌握AIGC工具
学号 102201426

一、项目展示

github_game_cat

二、项目介绍

1.项目名称:羊了个羊(猫猫版)

2.界面设计

  • 主菜单
    主菜单

  • 模式选择界面
    模式选择

  • 游戏界面

    • 简单模式
      简单模式

    • 困难模式
      困难模式

  • 结束界面

    • 游戏胜利
      胜利

    • 游戏失败

  • 排行榜界面

3.游戏逻辑

玩家点击小猫(图片)后,小猫(图片)会移动到下面的猫窝(收集框)中,当有三只一样的小猫时,它们会消除
猫窝最多只能容纳五只小猫,如果超过猫窝的容纳量,游戏失败
如果能将所有的小猫都送回家,那么游戏胜利
提醒一下,不单单要注意猫窝的容量哦,如果在规定的时间里没有将所有的小猫送回家,游戏也会失败
我想你会注意到游戏时间剩下10s(困难模式:30s)时那血红的倒计时的
黑
红

4.难度设计

  • 简单模式,限时1分钟,将18只猫猫送回家
  • 困难模式,限时2分钟,将36只猫猫送回家,猫猫们叠在一起打闹,只有将上层的猫猫先拿开,才能抓到下层的猫猫哦

5.特色功能

  • 增加撤销操作
    当玩家点击撤销后,上一次抓到的猫猫会从猫窝跑回原来的位置上(可爱的猫猫遇上了心软的神啊)

    • 撤销前
      前

    • 撤销后
      后

  • 实现分数系统与排行榜功能,记录玩家的最高分
    玩家消除一只猫猫则分数加一,游戏结束后,玩家成绩会记录到排行榜中
    分数越高排名越高哦
    当困难模式和简单模式的分数一致时,困难模式排在简单模式的前面

  • 再来一次
    玩家结束一次游戏后,不必要返回主菜单重新进行模式选择,可以直接在结束界面选择再来一次
    拉我起来,我还能再战!
    再来一次

三、测试

点击查看测试代码
import unittest from your_game_module import * # 假设您的游戏代码在名为your_game_module.py的模块中 # 假设您已经有一些全局变量或函数来初始化游戏状态 # 比如:current_state, board1, board2, score, collection, leaderboard等 class TestGameFunctionality(unittest.TestCase): def setUp(self): # 在每个测试用例之前运行,用于设置测试环境 # 这里可以重置游戏状态、初始化变量等 global current_state, board1, board2, score, collection, leaderboard current_state = GameState.START board1 = [[None for _ in range(board_width)] for _ in range(board_height)] # 假设board_width和board_height已定义 board2 = [[[None for _ in range(board_width)] for _ in range(board_height)] for _ in range(2)] score = 0 collection = [] leaderboard = [] def test_start_screen_navigation(self): # 测试开始界面的导航 mouse_positions = [ (350, 225), # 选择模式 (350, 325), # 排行榜 (350, 425), # 退出游戏 ] expected_states = [GameState.SELECT_MODE, GameState.RANKING, GameState.START] for pos, expected in zip(mouse_positions, expected_states): pygame.mouse.set_pos(pos) # 模拟鼠标位置 pygame.event.post(pygame.event.Event(pygame.MOUSEBUTTONDOWN, {})) pygame.event.get() # 清理事件队列 self.assertEqual(current_state, expected) def test_game_mode_selection(self): # 测试模式选择界面的操作 # 首先进入选择模式 pygame.mouse.set_pos((350, 225)) pygame.event.post(pygame.event.Event(pygame.MOUSEBUTTONDOWN, {})) pygame.event.get() # 选择简单模式 pygame.mouse.set_pos((350, 275)) pygame.event.post(pygame.event.Event(pygame.MOUSEBUTTONDOWN, {})) pygame.event.get() self.assertEqual(current_state, GameState.EASY_MODE) # 可以在这里继续添加困难模式的测试 def test_game_play_logic(self): # 这个测试可能更复杂,需要模拟游戏过程中的操作 # 这里仅展示一个简化的例子 pass def test_undo_feature(self): # 测试撤销功能 # 假设在某个游戏模式下,玩家进行了一些操作,然后撤销 pass def test_score_and_leaderboard(self): # 测试计分和排行榜功能 # 可以添加代码来模拟游戏胜利,并检查分数是否正确添加到排行榜 pass def tearDown(self): # 在每个测试用例之后运行,用于清理测试环境 pass if __name__ == '__main__': unittest.main()

测试结果

由于Pygame事件系统不直接支持在单元测试中模拟鼠标和键盘事件,上述测试中的pygame.mouse.set_pos()和pygame.event.post()只是示意性的,实际上在单元测试中没有发挥测试的作用。

四、AIGC表格

AIGC表格任务:小游戏分解子任务与AIGC应用分析

1. 小游戏可以分解成的几个小任务

子任务 借助何种AIGC技术,实现了什么功能 效果如何
游戏初始化 Cursor,设置屏幕尺寸、加载资源文件(图片、字体等)、初始化游戏状态等 很方便
用户界面绘制 文心一言,绘制开始界面、模式选择界面、排行榜界面、游戏界面、游戏结束界面 很方便
游戏逻辑处理 文心一言,鼠标点击事件处理、游戏模式选择、游戏难度设定、游戏进行逻辑等 很麻烦,ai不能很好的理解我的意思
排行榜处理 通义千问,读取排行榜数据、清空排行榜、保存排行榜数据等 有点麻烦,ai修正不了程序的bug
游戏板绘制 文心一言,根据游戏难度绘制简单模式或困难模式的游戏板 有点麻烦
收集框处理 通义千问,管理收集框中的图片,包括添加、移除、检查三张相同图片等 很方便
游戏结束判定与结果展示 文心一言,判定游戏是否结束(如所有图片消除、时间耗尽等),展示游戏结果 有点麻烦 ,需要对代码逻辑进行调整

2. 预估哪些子任务可以利用AIGC

序号 任务名称 预估AIGC适用性
1 游戏初始化 低(需要具体参数)
2 用户界面绘制 中(模板生成)
3 游戏逻辑处理 低(复杂逻辑)
4 排行榜处理 中(数据处理)
5 游戏板绘制 高(图形生成)
6 收集框处理 中(逻辑简化)
7 游戏结束判定与结果展示 中(结果展示)

3. 实际中哪些部分利用了AIGC

  • 用户界面绘制:使用AIGC技术根据提供的模板或设计自动生成用户界面元素(如按钮、标题等)的代码,提高开发效率
  • 游戏板绘制:对于游戏板的布局和图案的生成,可以利用AIGC的图形生成能力,根据规则自动生成不同难度的游戏板
  • 排行榜处理:在排行榜数据的读取、处理和保存过程中,可以利用AIGC进行数据处理模板的生成,简化代码编写

4. AIGC技术的优缺点,适合用在哪些方面,不适合实现哪些功能?

优点

  • 提高效率:自动化生成大量重复性代码,减少人工编写时间。
  • 创新设计:通过算法生成新的图形、界面元素,激发设计灵感。
  • 快速原型开发:快速搭建游戏或应用的基本框架,方便后续迭代。

缺点

  • 复杂逻辑难以处理:对于需要复杂逻辑判断和处理的任务,AIGC的生成效果可能不理想。
  • 高度定制化需求:对于需要高度定制化的设计或功能,AIGC可能无法完全满足要求。
  • 依赖外部工具:AIGC通常依赖于特定的工具或平台,学习曲线可能较高。

适合用在哪些方面

  • 界面设计:自动生成界面元素和布局。
  • 数据处理:自动生成数据处理模板和逻辑。
  • 原型开发:快速搭建应用或游戏的原型。

不适合实现哪些功能

  • 复杂逻辑:如游戏的核心玩法、AI策略等。
  • 高度定制化需求:如特定风格的艺术设计、复杂的用户交互流程等。
  • 需要人工审核的内容:如游戏剧情、文案等,需要人类进行创意和审核。

五、PSP表格

项目名称:羊了个羊(猫猫版)小游戏开发

角色:开发者

PSP阶段 任务描述 预估耗时(小时) 实际耗时(小时)
规划 需求分析,设计游戏结构和逻辑 8 2
确定使用的库和工具(如pygame) 2 2
设计 设计游戏界面和用户交互方式 4 3
设计游戏关卡和难度等级 6 1
设计排行榜和数据存储方式 2 3
编码 初始化游戏环境(包括屏幕、字体等) 3 4
实现游戏逻辑(简单模式和困难模式) 16 15
实现游戏界面切换(如开始界面、排行榜) 6 2
测试 功能测试(如游戏流程、难度变化) 8 1
用户体验测试(界面友好性、交互便捷性) 4 1
维护 修正发现的bug和接收用户反馈进行迭代 -(持续)

六、个人评价

本次小游戏的开发过程有些艰辛,对python语言和pygame库不是很了解,一些用法不熟悉,但还好,ai能及时的帮助我。我利用ai较快的搭建了我的游戏的整个界面及其切换,但是,完全利用ai来写也很难,ai往往不能在我第一次描述时就给我想要的代码,特别是一些复杂逻辑的游戏代码,需要我对代码进行反复调整,来达到我想要的效果。我在这个流程中对python语言有了一定了解,但我还需加强对高级语言的学习。这个小游戏还有很多可以进一步丰富的地方,也还存在一些我无从下手的bug,我还需要学习。


__EOF__

本文作者JQseventeen
本文链接https://www.cnblogs.com/JQseventeen/p/18419417.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   JQseventeen  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示