对于学校,我必须制作一个已经存在的游戏。 这是游戏的链接:Game link
一个简短的解释:您收到的每个级别(在屏幕右侧)可以放置在屏幕上的一组箭头,当您按下“开始”按钮时,奶牛开始移动。当他沿着箭头移动时,他将朝箭头方向改变方向。因此,你必须用箭头引导母牛到达他的最终目的地(奖杯)而不触及任何障碍物(如墙壁或树木......)。
我们必须实现Model-View-Presenter设计模式。 所以我从我的模型开始,因为这是我的游戏逻辑。
我的问题: 应使用简单的.txt文件读取每个级别 这是我的等级1的一个例子:
26,6
xxxxxxxxxxxxxxxxxxxxxxxxxx
xGRGGBGxGGRGGGGGGGGGGBGGTx
xGGGGRGGGGFGxGGGGGGGGGGGGx
xGFGGLGGGGGGGLGGGGGGGGGGGG
xGGGGSGGGxGGGGGGxGGGGGGGGx
xxxxxxxxxxxxxxxxxxxxxxxxxx
x=obstacle
G=grass
T=trophy
S= Start position of the cow
L= Fixed left arrow
R= Fixed right arrow
F= fixed front arrow
B= fixed back arrow
我读取文件并使用case语句将每个char放在一个行中(每个char代表一个对象)放在一个2D数组中。
我的问题是: 你有两组箭头:一个FixedArrow(它已经在场上,你不能改变它的位置)和一个VariableArrow(屏幕右侧的箭头,用户可以将它们放在字段上,如果字段是空闲的,或者如果它在Grass对象上,则使用其他字词。 但我怎么能这样做?如何创建一个单独的屏幕,我可以放置用户可以放在场上的箭头?
我知道我的解释很模糊所以我希望你们打开我上面发布的链接并玩1级,这样你就能更好地理解我的意思。
我将在此处发布我的代码和类图的一部分。 path =是我在上面解释的.txt文件的路径。
public class Board {
private Tile[][] tiles;
public Board(Path path) {
try {
int yRow = 0;
Scanner scanner = new Scanner(path);
String[] split = scanner.nextLine().split(",");
tiles = new Tile[Integer.parseInt(split[1])][Integer.parseInt(split[0])];
while (scanner.hasNext()) {
String line = scanner.nextLine();
for (int xRow = 0; xRow < line.length(); xRow++) {
char character = line.charAt(xRow);
switch (character) {
case 'x':
tiles[yRow][xRow] = new Tile(new Obstacle());
break;
case 'G':
tiles[yRow][xRow] = new Tile(new Grass());
break;
case 'S':
tiles[yRow][xRow] = new Tile(new Grass());
//cow.setStartPosition(xRow,yRow);
break;
case 'L':
tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.LEFT));
break;
case 'R':
tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.RIGHT));
break;
case 'F':
tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.FRONT));
break;
case 'B':
tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.BACK));
break;
case 'T':
tiles[yRow][xRow] = new Tile(new Trophy());
break;
//How should i read a set of arrows in without placing them in the game field but on the right side of the screen
}
}
++yRow;
}
} catch (IOException e) {
e.getMessage();
}
}
}
答案 0 :(得分:0)
您只需要使用输入扫描仪或其他设置变量箭头。变量箭头应位于二维数组中。您需要将输入中的变量箭头坐标与数组中这些点的符号进行比较,并检查是否可以放置新箭头或不允许使用新箭头。如果允许,则用新箭头标志替换此标志,或者重复使用固定箭头标志。
我希望我能正确理解你的问题,这有助于:)