软件工程课程第二次个人作业
这个作业属于哪个课程 | 软件工程课程 |
---|---|
这个作业要求在哪里 | 软件工程课程第二次个人作业 |
这个作业的目标 | 本次作业要求学生使用Python编写一个“羊了个羊”风格的消除类小游戏。学生需借助GitHub Copilot或其他AIGC工具生成部分代码,并完成游戏的基本功能和交互设计。 |
学号 | 102201439 |
软件工程课程第二次个人作业
作业题目:开发“羊了个羊”小游戏
任务要求
1. 游戏功能实现
界面设计:使用Pygame或其他图形库设计游戏界面,包括主菜单、游戏界面和结束界面。
游戏逻辑:
1.实现图案的生成与分层摆放,确保图案能够被合理匹配和消除。
2.玩家通过点击选择图案并消除,当所有图案被消除时游戏结束。
3.设置倒计时机制,时间结束时游戏失败。
4.难度设置:随机生成图案摆放顺序或设置不同的关卡以增加游戏挑战性。
项目展示:将项目代码上传至GitHub仓库,并在博客中提交仓库链接。
我完成的游戏代码
项目介绍:
这里向大家介绍一下我的代码编写思路:
游戏名字的设计:这个游戏的名字叫做羊了个羊。游
游戏页面的设计:总体来说,这个游戏的页面大小是不变的。
在游戏难度选择的界面中,设计这个界面以一张占据整个页面的图片作为背景,上面有三个按钮,分别是难度一,难度二和难度三,玩家通过点击按钮进入对应难度的游戏模式界面。
在游戏模式中(即游戏对局中),界面的大小是不变的,界面中图片的排布为六行五列,从上到下为列,从左到右为行。左边的五行五列为系统生成初始图片的位置,右边的五行一列为放置玩家选中图片的位置,他们中间用一条竖线分割,被玩家选中的图片从上到下依次排在右边的规定区域内。
游戏的玩法设计:这个游戏是一个必须在规定时间内完成的游戏,否则就会游戏失败,游戏过程中玩家也可以按下右上角的按钮选择认输来结束游戏。
游戏的规则是每局给出十五张图片,这十五张图片包含五种不同的图片,每种图片都是三张,不能出现一种图片数量多余或少于三张的情况。玩家每次可以选中任意位置最上层的一张图片,按照玩家选择的先后顺序,被选中的图片被从左边移动到右边从上到下按序排列,在选择的过程中,左边出现连续三个图片相同时,这三个图片消失,后面被选中的图片移动上来顶替空缺的位置,玩家在规定时间内使页面上的图片,消失则获得游戏胜利。
游戏对局中设计难度一是十五个图片在同一平面上,他们的排列是五行三列,每行之间空一行。
难度二是十五个图片分为三层排列,即选择掉上面的图片后,在原有位置出现一张新的图片,图片总量满足十五张图片,每种类型的图片在同一局游戏里只出现三次,每个位置只会刷新三张图片,他们的排列是占据左边五行五列的1,3,5,7,9的位置。
难度三是十五个图片分为五层,即选择掉上面的图片后,在原有位置出现一张新的图片,图片总量满足十五张图片,每种类型的图片在同一局游戏里只出现三次,每个位置只会刷新五张图片,排列是一行三列,占据五行五列中的1,3,5的位置。
游戏失败的条件有三个,一个是玩家选择的图片占满了右边的五个格子并且没办法达成五个中有三个连续的相消,或者是时间到了玩家没有清空页面上的所有图案(包括左边和右边),或者是玩家按下放弃按钮主动放弃。胜利的条件只有一个,就是把左边的全选掉并且让右边的图案全部相消。
出于个人技术的限制,我暂时无法做到像大佬一样使图片出现在任意位置或者是精美的游戏界面,目前所能呈现出的游戏效果已经是我个人能力的极限。
介绍项目的前端设计与特色功能。
描述完成项目中所使用的技术和特殊的算法,并展示实现思路,可以使用图表进行展示。
扩展功能的开发
老师给出了以下的三种拓展功能的提示,但是目前我个人所能做到的就是提供多种难度模式。
增加道具功能,如提示、撤销操作等,以增加游戏趣味性。
提供多种难度模式,给玩家不同的挑战体验。
实现分数系统与排行榜功能,记录玩家的最高分。
测试:
(编写测试样例,展示测试结果,并对测试设计进行评价,讨论测试用例是否满足程序测试需求。)
测试和修改过程:一开始我们的代码十分的抽象,由于思路过于简单,没有完善底层的逻辑,我们一开始出现了很多问题。
这里就从第三版的问题开始吧,因为前两版的代码甚至做不到生成可供选择难度的界面,过于抽象,就不放出来了。
第三版的问题主要出现在实际游戏对局中的底层逻辑方面:
对于我们的难度一,我们通过截图可以看到,最突出的问题就是没有按照设计的那样,生成的图案为三的倍数使图案顺利相消,并且在实战中,我们还发现,当剩余五个图案时,以任意方式选掉这五个图案后就会获得比赛胜利,但是实际上我们根本不满足获胜条件。
对于我们的难度二,则是直接代码出错无法进入。
对于我们的难度三,我们通过截图可以看到,它根本没有按照我们涉及的思路来,并且只有一层,点掉之后就没有出现下一层的新图案了,明显也是不合格的。
还有一个抽象的bug就是,我们点击×号按钮退出时,游戏竟然也判定我们胜利了。
总结这一版,就是一个惨不忍睹。但是对于我们一开始尝试的前两版来说,已经是质的飞跃了。
然后我们马上学习修改,出现了第四版代码。
我们的第四版,从游戏进入的选择页面就出现了问题,这个问题是按钮显示的问题,好在选择功能没有出错。
然后底下依次是模式一二三的页面截图,可以看见,模式一二的页面得到了一定的优化(但不多),模式三的页面还是错误的
并且图案出现的数目和刷新新的一层图案的功能依旧不可以用
接着我们又陆续改了很多版本。。。终于得到了满意的一版。
AIGC表格任务:
列出小游戏可以分解成的几个小任务。
预估哪些子任务可以利用AIGC。
实际中哪些部分利用了AIGC。
AIGC技术的优缺点,适合用在哪些方面,不适合实现哪些功能?
子任务 | 借助何种AIGC技术,实现了什么功能 | 效果如何? |
---|---|---|