Categories
R语言代写

图片.png

如果用户输入了无效命令,你的程序必须输出:

没有菜单项

级别文件

关卡文件将包含与游戏相关的数据,例如行星的尺寸、名称、探测器位置和属性以及图块信息。

该文件的格式如下:

[行星]

姓名,

[瓷砖]

[ ,]

瓷砖数量取决于星球的尺寸。例如,如果宽度为 6,高度为 5,则列出的瓷砖数量应严格为 30。

如果满足以下条件,则认为级别文件的结构正确:

• 行星部分下指定了4个字段,并且图块的数量与行星的 尺寸相匹配。

• 指定的流动站坐标大于或等于0。

• 探测器的坐标必须在该行星的尺寸范围内。

• 宽度和高度值都需要大于或等于5。

• 对于图块而言,最高海拔严格大于最低海拔。正确结构的关卡文件片段:

[行星]名称,冥王星宽度,5 高度,5 探测器,1,0

[瓷砖]平原,0 阴影,0 平原,1阴影,0,-1

瓷砖按行主序排列。您必须从上到下、从左到右插入瓷砖。放置探测车时要记住的规则是:x 对应于行索引,而 y 对应于列索引。例如:

 

[瓷砖] 对应 到:
一个 |A|B|
|C|D|

 

您的程序必须能够支持加载使用此格式的任何关卡文件。但是,您的程序需要检测关卡文件是否正确。要检测关卡文件是否正确,它将需要行星和图块的两个部分。

我们会为您提供一些演示级别供您在测试时使用,但建议您编写自己的测试级别或生成自己的测试级别的脚本。

行星

行星被定义为地形图块的二维网格。所有图块都是正方形且长度单位。每个图块将具有不同的数据,如图块部分所述。                   

行星是球形的,而不是平的。这意味着网格最左边的列应该与最右边的列“相接” 。同样,最上面一行应该与最下面一行相接。

您需要设计一个程序,允许在行星上导航并跟踪探测车所在的方格。该行星具有以下属性:

• 宽度。

• 高度。

• 具有会影响流动站的瓦片属性的瓦片(必须包含宽度*高度数量的瓦片)。      

您可以自由地为您的Planet类别添加其他属性。

瓷砖

一个行星由许多单独的地形图块组成,每个图块具有以下属性:

• 相对于 0 的海拔(可以是负数或正数)。

• 效果:每个图块对探测车都有各自的效果。这将在下一节“地形和坡度”中描述。

地形和坡度

地形是图块的一个属性。允许的地形类型有两种:

地形类型

•  “ ” – 无阴影的平原(暴露在阳光下)、平原。

•  “#” – 阴影平原,阴影。

海拔效应

•  “+” – 相对于探测车升高的瓦片。

•  “-” – 相对于探测车下降的瓦片。

由2 个海拔值描述的图块是倾斜的。这将允许探测车在提供的两个给定海拔值之间向上或向下移动。坡度在最高和最低(最高-最低之间只有1的差值。                                            

•  “\” – 下坡,允许移动到较低的水平。

•  “/” —上坡,允许移动到上层。

举个例子:shaded,0,-1

如果探测车的海拔为 -1,则该图块将显示为上坡。这允许探测车访问海拔为 0 的图块。

如果探测车的海拔为 0,那么该方格将显示为向下倾斜,这允许探测车访问海拔为 -1 的方格。

流浪者

探测车是玩家在游戏中控制的对象。当探测车扫描周围区域时,会用H符号表示,并且必须在任何给定时间占据地形图块。

• 在关卡文件中,rover这一行表示探测车的起始位置。例如,

rover,1,0表示探测车从 (x, y) 坐标 (1, 0) 出发。

• 当前坐标(x,y)。

• 电池充电,最大充电量为 100,并且始终以 100 的充电量启动。

• 已探索的方格数量。

探测车将在行星表面移动,能够探索地形的不同部分。探测车的目标是探索整个表面,一旦探测车探索了整个行星或耗尽电量,玩家可以输入FINISH命令(在下一节中指定)以结束游戏并输出他们探索了多少行星。

您已探索{planet}的{percentage}%

电池

探测车在阴影区域移动时会断电。每次移动到阴影区域,电池电量都会减少 1。探测车在非阴影区域移动时,电池电量保持不变。如果探测车在非阴影区域等待,则会重新充电。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注