ToB企服应用市场:ToB评测及商务社交产业平台
标题:
2024秋软件工程课程个人作业(第二次)
[打印本页]
作者:
半亩花草
时间:
2024-9-18 22:06
标题:
2024秋软件工程课程个人作业(第二次)
软件工程课程
班级链接
作业要求
作业链接
作业目的用python开辟“
羊了个羊
”小游戏学号102201312
一、《球了个球》先容
注意:项目已在Github开源,请跳转至链接
Github软工个人第二次作业
(1)游戏配景
随着进入大三以来体育课被取缔以及学业课程越来越繁重,同砚们很难腾出时间来进行体育锻炼。正所谓“
每天锻炼一小时 康健工作五十年 幸福生活一辈子
”,体育锻炼是重要的。本游戏旨在用球类消消乐激发同砚们进行体育锻炼的热情。
(2)游戏规则先容
1.游戏设有三个关卡,玩家通过点击选择图案,三个类似图标即可消除,当全部图案被消除时就可进入下一个关卡。若超出选择限制(7个)则游戏失败。
2.每关难度呈指数级上涨,以此分数也会递增。第一关每消掉三个加一分,第二关每消掉三个加两分,第三关则加三分。
(3)实现功能
主菜单,四个按钮交互。
三种难度模式,给玩家差别的挑衅体验。
分数奖励机制,为玩家提供鼓励。
排行榜,让玩家得到竞赛的快感。
鼠标悬停到选块,出现提示音效。
二、我的项目实现过程
我的编程环境:vscode
我的AIGC应用:Github Copilot+ChatGPT
我的AI文生图:Copilot.Microsoft
我的免费可商用图标来源:
(icons8.com)
三、游戏展示及过程
1.游戏主界面
2.游戏的三个关卡
难度指数级上升
3.游戏的胜利界面
4.游戏失败界面
5.排行榜界面
递减排序
6.游戏所用图标展示
四、游戏实际测试
第一关
第二关
五、核心算法展示和实现过程
1.主要逻辑
我设置了多种游戏状态game_state,使我流程顺利地在主菜单与其他界面之间切换状态。
2.三种关卡的算法
①第一关
我询问了Github Copilot,它为我生成了简朴的算法,以下是它的代码和分析。
# 第一关:只有一个平层,没有覆盖
def initialize_tiles_level1():
global tiles
tiles = []
ts = list(range(1, 13)) * 3 # 根据需要减少牌的数量
random.shuffle(ts)
n = 0
rows = 6 # 控制行数
cols = 6 # 控制列数
# 在平面上布局牌,没有层次
for i in range(rows):
for j in range(cols):
if n >= len(ts):
break
t = ts[n]
n += 1
tile_img = pygame.image.load(f'images/tile{t}.png')
tile = {
'image': tile_img,
'rect': tile_img.get_rect(), # 牌的位置用于碰撞检测
'tag': t, # 牌的标签1-12
'layer': 0, # 没有层次
'status': 1 # 所有牌可点击
}
tile['rect'].topleft = (100 + j * tile_img.get_width(),
100 + i * tile_img.get_height() * 0.9)
tiles.append(tile)
复制代码
②第二关
# 第二关:金字塔
def initialize_tiles_level2():
global tiles
tiles = []
ts = list(range(1, 13)) * 12
random.shuffle(ts)
n = 0
for k in range(7): # 7层
for i in range(7 - k): # 行
for j in range(7 - k): # 列
t = ts[n]
n += 1
tile_img = pygame.image.load(f'images/tile{t}.png')
tile = {
'image': tile_img,
'rect': tile_img.get_rect(), # 牌的位置用于碰撞检测
'tag': t, # 牌的标签1-12
'layer': k, # 牌的层数
'status': 1 if k == 6 else 0 # 只有最上层的牌可点击
}
tile['rect'].topleft = (120 + (k * 0.5 + j) * tile_img.get_width(),
100 + (k * 0.5 + i) * tile_img.get_height() * 0.9)
tiles.append(tile)
# 将多余的4张牌放到下面
for i in range(4):
t = ts[n]
n += 1
tile_img = pygame.image.load(f'images/tile{t}.png')
tile = {
'image': tile_img,
'rect': tile_img.get_rect(topleft=(210 + i * tile_img.get_width(), 516)),
'tag': t,
'layer': 0,
'status': 1
}
tiles.append(tile)
复制代码
③第三关
根据前两个的布局,我让Github Copilot为我生成了更有难度的算法。(我自己都无法通关)
# 第三关:更复杂的布局和更多层次
def initialize_tiles_level3():
global tiles
tiles = []
# 计算总共需要的牌数
total_tiles_needed = sum((9 - k) ** 2 for k in range(9)) + 6 # 每层和底部的独立牌
ts = list(range(1, 13)) * ((total_tiles_needed // 12) + 1) # 根据需要重复生成牌
random.shuffle(ts)
n = 0
layer_offsets = [0, 0.5, 1.0] # 控制每层牌的偏移,制造更复杂的布局
y_offset = -30 # 向上移动 50 像素
x_offset = -80 # 向左移动 30 像素
# 9层的复杂布局,每层牌数量不同
for k in range(9): # 9层
offset = layer_offsets[k % len(layer_offsets)] # 使用偏移
rows = 9 - k # 行数随层数减少
cols = 9 - k # 列数随层数减少
for i in range(rows): # 行
for j in range(cols): # 列
if n >= total_tiles_needed:
break
t = ts[n]
n += 1
tile_img = pygame.image.load(f'images/tile{t}.png')
tile = {
'image': tile_img,
'rect': tile_img.get_rect(), # 牌的位置用于碰撞检测
'tag': t, # 牌的标签1-12
'layer': k, # 牌的层数
'status': 1 if k == 8 else 0 # 只有最上层的牌可点击
}
# 左移和上移 tile 的 X 和 Y 坐标
tile['rect'].topleft = (120 + (offset + j) * tile_img.get_width() + x_offset,
50 + (offset + i) * tile_img.get_height() * 0.9 + y_offset)
tiles.append(tile)
# 在底部随机放一些独立的牌
for i in range(6):
t = ts[n]
n += 1
tile_img = pygame.image.load(f'images/tile{t}.png')
tile = {
'image': tile_img,
'rect': tile_img.get_rect(topleft=(random.randint(100, 500) + x_offset, random.randint(500, 600) + y_offset)),
'tag': t,
'layer': 0,
'status': 1
}
tiles.append(tile)
复制代码
六、AIGC表格:学习内容及心得了解
AI辅助
子任务AIGC技术实现功能结果如何界面设计Copilot代码参考,根本框架构建提供了较为简朴的底子框架,方便进一步优化,但也存在一些小bug按钮设计Copilot代码参考,根本框架构建提供了pygame按钮设计的干系函数,经过简朴修改可以正常使用功能参考ChatGPT代码参考,根本框架构建提供了一些函数的干系设计思路,比如图像消除等,要实现个性化的复杂代码还必要进一步调试素材参考icons8提供免费图片素材告诉了一些网站参考和干系途径,有一定参考价值图片生成Copilot文生图生成简朴logo部分可以使用,必要耐烦调试
AI生成表格
项目内容作业标题开辟“羊了个羊”小游戏配景同砚们体育时间淘汰,必要激发活动热情主要劳绩1. 学习了如何使用Pygame设计游戏界面。 2. 理解了图案生成与消除的根本逻辑。 3. 掌握了如何利用AIGC工具生成代码。遇到的挑衅1. 实现图案的合理匹配与消除。 2. 设置倒计时机制和难度调整。 3. 确保代码布局清晰且可维护。改进建议1. 加强图案消除算法以提高游戏体验。2.添加点击特效,增加绿框。 3. 改进界面设计以提高用户体验。
七、PSP表格:任务分解与时间管理
任务描述预估耗时 (小时)实际耗时 (小时)差异 (小时)备注筹划和需求分析预估项目开辟时间,制定整体开辟筹划12+1游戏界面设计使用Pygame或其他图形库设计主菜单、游戏界面和结束界面。57+2界面设计比较简洁轻快,可以增加更多功能图案生成与摆放实现图案的生成和分层摆放逻辑。32-1图案生成符合预期,较为合理图案选择与消除逻辑实现玩家点击选择图案并消除的逻辑。42-2消除逻辑顺利实现,功能正常。排行榜机制设置分数和排行榜功能,游戏失败后计入前十名。21-1排行榜机制实现得比较顺利。难度设置随机生成图案摆放顺序或设置差别的关卡增加难度。32.5-0.5难度设置结果良好,但关卡设计另有很大提高空间。使用AIGC工具生成代码利用OpenAI等工具生成部分代码。23+1代码生成较为准确,注释清晰。但仍必要人为调整修正代码测试与调试测试游戏功能并修复大概的bug。57+2测试过程中发现了一些意外的bug,通过修复得以解决文档编写与注释编写代码注释和项目文档。23+1文档编写比较顺利,注释完备。
总耗时
27
29.5
八、 项目总结
在这个项目中,我借助 Pygame 学会了从零开始开辟一款 小 游戏,特别是在界面布局、音效设计与逻辑处理上有了明显的进步。我更深入地熟悉到了细节设计的重要性,比如图标的点击反馈和音效的应用如何明显提拔游戏体验。此外,通过对 PSP 表格的管理,我的时间管理和项目组织能力也得到了很好的锻炼。
不过期间仓促,有一些功能仍然没有实现,希望以后能将这个项目完善。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4