CPSC217:计算机导论多学科研究科学I
课业3:BeatHero
重量:7%
协作
与他人讨论课业要求是一件合理的事情,也是一种很好的学习方式。
然而,你交的工作必须是你的,而且是你自己的。这对您从中受益至关重要
学习经验,并为您提供公平的评分。交上不是你的原创作品,而是
就其本身而言,就是剽窃。大学校历中列出了惩罚措施。常见的首罚是F
抄袭课业。以下是一些避免编程课业抄袭的技巧。
1.使用程序中的注释引用所有不是您原创作品的代码源,
包括完整的URL。例如,如果您在网站上找到并使用代码,请包括注释
上面写着:
2.引用消息来源避免了对抄袭的指控和对学术不端行为的惩罚。但是,您可以
如果您提交的代码不是主要代 写CPSC217由自己开发的,仍然会得到低分。引用的材料应
永远不要用于完成核心分配规范。在提交之前,您可以也应该验证
您与讲师/TA关心的代码。
3.尽可能多地与其他程序员讨论和分享想法,但要确保在编写
代码它是你自己的。一个好的经验法则是在与某人交谈后等待二十分钟
编写代码。
4.严禁协同编码。讨论任何超出任务要求和想法的事情都是
严禁任何形式的合作。这包括共享代码、讨论代码本身或建模代码
在另一个学生的算法之后。你不能使用(即使有引文)其他学生的代码。
5.使用生成人工智能工具,如Copilot或ChatGPT,帮助您完成课业是可以接受的
有限的情况下,归因。例如,如果你的任务是编写一个Tic-Tac-Toe程序,你
可能会询问ChatGPT关于该任务的一小部分,例如“如何将中的字符串转换为整数
蟒蛇你不能要求这样的工具来完成整个任务。例如,询问ChatGPT“我该怎么做
用Python写Tic-Tac-Toe?”是不可接受的。如果您使用这样的工具,请用注释指出
你向生成人工智能工具询问的部分代码。请记住,当你写考试时
将无法访问这些工具,因此明智的做法是不要过于依赖它们。
6.让你的代码可以供他人复制,甚至是被动地复制,这也是剽窃。
7.我们将在所有提交的代码中寻找抄袭行为,可能使用为
任务
8.记住,如果你的课业有问题,最好去找你的助教和/或老师
获得帮助比剽窃更重要。
逾期罚款
你每学期(所有课业)总共有五个宽限日。之后,迟交的课业将不会
在没有大学批准的书面理由的情况下被录取。
球门
在创建游戏时练习使用列表、元组和字典。
技术
Python 3,SimpleGame包
提交说明
此课业要求您使用Python编写计算机程序。使用Assignment 3下拉菜单
框提交您的Python文件。您可以在以前的基础上多次提交
屈服您的赋值必须可使用Python 3.9.0+版本执行。您必须使用
SimpleGame库,其中包含beatHeroStarter.py代码,让您开始游戏。您可以
导入课堂上教授的库,如随机库和数学库。不导入任何其他库以完成
这项任务。
上传CPSC217W24A3-Name.py(例如CPSC217W14A3-MichelleCheatham.py)
如果使用自己的图像、声音或音乐,请将.py文件与包含所有媒体的文件夹一起压缩
与您的项目关联。
描述
游戏概述
这款名为BeatHero的游戏的灵感来源于Beat Saber虚拟现实游戏。我们的游戏要简单得多,
你可以用键盘在电脑上播放。在课业Dropbox中观看视频
为了更好地了解游戏应该如何进行(说真的,停止阅读这里并观看
继续之前的视频!)
在我们的版本中,当游戏开始时,配乐开始,节拍开始从屏幕上落下,在
首先是缓慢的,一次几次,但随着节拍在区域内移动,它们会加速并测试
你的灵活性。你的目标是在时间不多之前尽可能多地得分。每个节拍都有代表
通过箭头。要得分,你需要按键盘上的箭头键
在它击中屏幕底部之前由节拍箭头标记。屏幕上有多个节拍,你
必须始终以最低的目标为目标。
游戏结构
比赛前
当游戏运行时,会出现开始屏幕。由于BeatHero是一款实时游戏,此步骤确保
玩家已准备好在游戏开始前进行游戏。只有当玩家按下时,游戏才会开始
空格键。
比赛期间
一旦游戏开始,同时播放音乐曲目,倒计时计时器开始,并且
节拍开始以三种不同的方式从屏幕上落下。屏幕分为三个水平
区域。当节拍进入一个区域(包括第一个区域)时:它随机旋转、改变颜色、速度
向上,并因正确操作而获得的分数增加。从上到下的区域是橙色的,
粉红色和蓝色。当玩家按下箭头键时,该键的表示会显示在
屏幕每次玩家正确按下与最低拍子方向同步的箭头键时
在屏幕上,拍子变绿,旁边有一个分数,很快就消失了,玩家就是
获得适当数量的分数(橙色区域1分,粉色区域2分,蓝色区域3分);我们指的是
这是一个热门。如果玩家没有按正确的箭头键,或者节拍到达底部
在按下任何键之前,屏幕上的节拍都会亮起红色并消失;我们称之为失误。
赛后
一旦计时器达到0,游戏结束。在这个阶段,所有的节拍都会从屏幕上删除
将获得更多积分。最终分数显示在屏幕上。
SimpleGame
要对BeatHero进行编程,您将使用一个名为SimpleGame的游戏引擎,该引擎基于PyGame
和PyGameZero!你可以在这里下载。您将可以访问有关如何
SimpleGame的工作原理以及如何安装它。我们还为您提供了一个示例代码作为的起点
你的游戏。按下键盘上的空格键后,音乐开始播放,单拍子指向
屏幕向右倾斜。您可以在该文件中提供的任何函数中编写代码,但是
您仍然需要添加其他功能。
SimpleGame包附带一个名为SimpleGame的模块。通过提供的所有功能
模块在此处列出。在开始编写代码之前,请仔细阅读每个代码的文档
SimpleGame函数(文档字符串)来了解您可以使用的内容。您只能使用
此模块用于此任务的功能。此外,在IDE中,如果将鼠标悬停在函数上
名称,您将看到它的描述、参数(如果有)和返回值(如果有的话)。
在起始代码中,您会注意到三个函数(update、draw和on_key_down)被调用
内部。这意味着你不需要在代码中的任何地方调用这些函数,因为它们会
在适当的时间自动被游戏引擎调用。
使现代化
像许多其他游戏引擎一样,SimpleGame使用一个游戏循环,称为每秒60次。这个
60帧/秒(每秒帧数)允许游戏不断更新,以保持游戏的流畅性
这对于实时游戏来说是非常基本的。在您的启动代码中,在update()函数内,我们
提供了一个frameCounter,您可以使用它来计算在
不同的动作。
这是你应该编写游戏逻辑的地方,比如动画/移动游戏元素,更新
分数、检查游戏条件等。
画
每当屏幕上的某些内容发生变化时,就会调用此函数,例如节拍向下移动了几个
像素。与simplegraphics类似,(0,0)坐标位于屏幕的左上角,顺序为
你画的游戏元素很重要。如果你在这个函数中放入任何游戏逻辑,它会
大大影响你的游戏速度,甚至使其滞后。
除了循环和条件外,您的代码应该只使用此函数在屏幕上绘图。这个
SimpleGame提供的绘图功能有draw_background_image()、draw_element()和
draw_text_on_screen()。请注意,在首次创建图元之前,不能绘制该图元。
on_key_down()
此函数是一个事件处理程序,每当按下键盘上的键时都会调用它。整数
表示密钥的值从simplegame模块传递给get_key_pressed()函数
并存储在该函数内部的key_ pressed变量中。你只需要比较这个值,看看
这是一个所需的键,如果不是,你可以忽略它。试着打印key_pressed变量,看看它是什么
当您按下键盘上的不同键时显示。
simplegame模块内的函数
在这里,我们快速回顾一下您可以通过simplegame获得的一些功能
单元
创建、绘制和旋转可移动图元
要在屏幕上放置任何图像,首先需要调用create_element()函数。你会通过
图像文件的名称(不带.png扩展名)以及起始位置,它将返回
字典,其中包含该特定元素的id。
•每个节拍的随机流。
•进入新区域时:
a.随机旋转
b.根据区域打色
c.移动速度增加
d.价值点增加
•用于节拍的5种不同箭头图像(橙色、粉色、蓝色、命中、未命中)。
您的代码中不允许使用超过5个箭头图像。
•文本/图像,在命中节拍旁边添加分数。错过的旁边没有文本
击败
•屏幕上可以看到倒计时计时器,当计时器达到零时,它将结束游戏。
•玩家在比赛中的实时得分,以及比赛结束时的最终得分。
•玩家在游戏中按下的按键的视觉表示。
可选择的
您不需要使用我们的图像,但严禁使用4种不同的图像
向上、向下、向左和向右,因为您需要通过旋转相同的图像来处理代码中的这一点。如果您使用
不同的图像、音乐和声音片段,确保它们符合SimpleGame中提到的标准
文档如果您要添加自己的箭头,请确保所有箭头图像的角度相同,
而不是对于每个旋转具有单独的图像。您只能使用png图像和wav
音乐或声音。请确保仅使用小写的文件名,并将其添加到
相应的文件夹。
分级
课业将被给予一个加号/减号的分数,分数基于课程的
功能水平和符合规范。完全符合规定
要求将获得A。特别令人印象深刻的提交材料可能会获得A+。
作为提醒,卡尔加里大学将字母等级赋予以下含义:
A: 优秀–表现出色,表现出对主题的全面理解
课题
B: 良好——明显高于平均水平,对
主题
C: 满意——对主题的基本理解
D: 最小通过率——边际性能;后续准备一般不足
同一科目的课程
F: 失败–性能不令人满意
如何获得A+
对于想要做额外工作以获得A+的学生,你可以选择以下选项之一。笔记
因为这是可选的,助教和讲师将无法帮助你找出如何实现
本节中的内容(在实现或调试中)。
-有第二种游戏模式,在这种模式下,如果玩家错过了三次击球,他们就会输,如果他们赢了
最后一个计时器。玩家必须能够在开始游戏之前选择游戏模式。
-添加3个随机选择的超级节拍(为其找到一个新图像),如果玩家击中右侧
按键,屏幕上当前的所有节拍都会消失(并且你会得到相应的分数)。
-至少添加以下两项:(1)在屏幕上添加额外的控制元素,例如控制
节拍的起始速度,(2)现有元素的额外功能,例如计时器
随着玩家接近游戏结束,颜色逐渐从绿色变为红色。