Assignment 题目
本页目录· 15 条
FIT9131 作业 A:动物追踪游戏
简介
本作业的截止日期为 第7周(2025年4月14日,星期一)上午 09:30(澳东标准时间)。此外,您还需在第 5 周和第 6 周的应用课程(Applied Classes)中向导师展示您的工作进展。
该作业占本单元最终总成绩的 10%。逾期提交将被扣除大量分数。这是一个个人作业,必须由您独立完成。若有代码并非您亲自编写,您必须注明其来源。请注意本文档中的抄袭说明部分。
您不得使用生成式人工智能(AI) 来生成与本单元任何评估任务相关的任何材料或内容。
作业必须在 Ed 平台上提供的 Assignment A 工作区环境中完成。所有代码必须直接在该工作区中编写,不得从其他地方复制粘贴。
Java 源代码必须遵循 FIT9131 编码规范(参见课程 3.4)。
如有任何需要澄清的问题,请在应用课程中与您的导师讨论。
完成本作业将有助于您实现以下 FIT9131 学习成果:
- 根据标准面向对象原则设计和构建 Java 程序。
- 对 Java 应用程序应用并演示调试过程。
- 开发高效有效的程序测试策略。
- 按特定编程标准编写文档。
规范说明
您将编写一个程序,让玩家与计算机进行一场名为 动物追踪(Animal Tracking) 的游戏。本节将说明程序所需的功能。该程序仅需提供文本界面;但若游戏界面信息清晰、提示和错误信息明确,将可获得更高分数。
在 Animal Tracking 游戏中,人类玩家(H)和计算机(C)将沿自然小径(nature trail)收集动物目击得分,并展开竞争。
为帮助完成此作业,我们提供了一个 Landscape 类,您可以使用其静态方法获取自然小径的配置。
游戏玩法
游戏开始时,屏幕将请求人类玩家输入姓名。姓名长度必须在 1 到 10 个字符之间,且不得以空格开头或结尾。另一个玩家将是计算机。
玩家将选择一个 简单小径(easy trail) 或 复杂小径(complex trail)。小径的特点如下:
- 简单小径:长度为 12 到 20 个位置,每种自然特征(nature feature)各一个,随机放置。特征不会放置在起点或终点。
- 复杂小径:长度为 15 到 30 个位置,每种自然特征最多可出现三次,随机放置(不会放在起点或终点)。
您需要通过 Landscape 类中的静态方法 getEasyTrail() 或 getComplexTrail() 来获取小径配置。这两个方法都会返回一个字符数组。数组中的每个位置要么是下划线 _(表示空地),要么是一个代表自然特征的字符('c'、'b'、'f' 或 'l')。
自然小径将在屏幕上显示,如下图所示,以空格分隔的字符序列表示,起点是 S,终点是 F。如果玩家和计算机在同一位置,显示为 HC:
[图1:自然小径的表示方式]
游戏从起点开始,玩家和计算机轮流掷一个 4 面骰子,按点数前进。人类玩家先行。
每当玩家移动到某个位置,有 50% 概率可以目击动物并获得分数;某些位置包含自然特征,将引发前进或后退的动作。第一个到达终点的玩家触发游戏结束,以得分决定胜负。
游戏规则
- 每个玩家以 0 分开始游戏。
- 玩家进入某位置后,有 50% 概率目击一只动物。动物共五种,出现概率均等(每回合最多看到一只动物),得分如下表所示([见课程平台中的表格截图])。
- 若该位置含有自然特征,则玩家需按特征执行前进或后退(如果超出起点或终点,将被限制在起点或终点)。
- 玩家完成一次移动后,回合才结束。注意:只在最初落点可能获得动物目击积分并执行特征动作,若因特征移动到新位置,不会再次得分或触发动作。
- 不要求正好落在终点。例如,若距终点 1 格,掷出 3,也会直接进入终点,触发游戏结束。
- 每次操作需输出结果信息,如骰子点数、动物目击、动作执行等。每回合后输出玩家位置及当前分数。
- 首个到达终点者额外获得 10 分。最终得分较高者获胜,显示胜者信息。
程序设计
程序必须包含至少以下六个类:
PlayerGameDiceTrailNatureFeatureLandscape(已提供)
Player 类
描述玩家的属性与行为,字段包括:
name:玩家姓名position:在小径上的当前位置score:累计得分
必须包括默认构造器和一个接收姓名的构造器,以及适当的 getter 和 setter。应防止出现无效状态。此类 不得进行输入/输出操作。应提供 toString() 方法以返回对象状态字符串。
Game 类
控制游戏流程,字段包括:
natureTrail:Trail 类型对象,代表小径player1:Player 类型对象(人类)player2:Player 类型对象(计算机)
必要方法包括但不限于:
- 显示欢迎信息
- 请求简单小径
- 请求复杂小径
- 请求人类玩家输入姓名
- 掷骰子
- 显示小径及玩家位置 displayTrail
- 移动玩家 move
- 修改玩家得分 modifyScore
- 启动游戏主流程
- 显示游戏结果
Dice 类
表示骰子对象:
numberOfSides:骰子最大面数(本游戏中为 4)
Trail 类
表示自然小径:
natureTrail:一个数组,数组中的每个位置为NatureFeature对象或null
NatureFeature 类
表示自然特征,字段包括:
featureType:代表特征的字符('c', 'b', 'f', 'l')featureName:特征名称(参见表格)spacePenalty:前进/后退格数(建议将后退设置为负数)
评估标准
评估将通过 面试 进行。分数分配如下:
- 10% – 编码进度评估(通过 Ed 平台工作区查看):
- 第5周:完整
Player类 +Game类前 5 个方法(各占 5%) - 第6周:
Game类的第 6、7、8 个方法(占 5%)
- 10% – Java 代码质量与面向对象设计质量(包括编码规范、类设计等)
- 20% – 程序功能是否满足要求
- 60% – 面试评估
面试说明
您需要在截止日期后参加一次“面试”展示程序。导师将提问有关代码与设计的问题,可能要求您修改代码或解释设计决策。不能解释清楚的部分将不得分。
面试安排将在第 6 周的应用课程中确定。面试将在第 7 周应用课程内进行。未参加面试的学生作业得分为 0 分。
提交要求
- 提交截止时间为 2025年4月14日(第7周星期一)上午09:30(AEST)。
- 主类文件必须命名为
Game.java,且包含main()方法。 - 在 Ed 平台上提交代码,使用右侧工作区编写。
- 截止日期前可多次提交,系统以最后一次提交为准,迟交将产生罚分(每天扣 5%)。
- 必须上传已签名的 Assignment Coversheet(作业封面) 的 PDF 文件。
抄袭警告
抄袭与合谋属于严重违规行为。所有提交代码将使用相似性检测工具进行核查,若发现与他人代码相似,将进一步调查。
历史处理结果包括:
- 作业得分为 0
- 甚至面临学术纪律处分
请确保在 Ed 平台中完成代码编写,不要从外部复制粘贴大段代码。