我创建了一个如下所示的2D数组游戏:
.........H
...X......
...X.@@@..
...X......
...X.@.X..
.XXXXX.X..
.......X..
.....@.X..
.......X..
P.........
Next option ?
玩家在吃“甜甜圈”时的生命增加一,这使得跳跃网格成为可选。因此,不是按下‘U’, ’D’, ’L’ or ’R’
并按下Enter键从一个网格移动到下一个网格,玩家在吃完一个甜甜圈后可以选择输入‘U2’
来跳过一个网格并降落到更高的网格或说‘R2’
向右跳一个网格等。如果玩家吃了第二个甜甜圈,他现在可以输入‘U3’
或'D3'
之类的命令来跳过两个网格。等等。
我编写了以下代码,没有取得多大成功:
// Declare a variable to hold values for use in regular movements
private static char opt1;
// Declare a variable to hold values for use in specifying square numbers for super moves
private static int opt2;
public static void main(String[] args) {
String opt;
// The code below is a part of a do-while loop that keeps the game running till it ends naturally
System.out.print("Next option ?");
opt = scan.next();
if (lives == 1) {
opt1 = opt.charAt(0);
} else if (lives > 1) {
opt1 = opt.charAt(0);
opt2 = Character.getNumericValue(opt.charAt(1));
}
只有1点生命,它完美无缺,但是当生命增加时,我所拥有的问题就是如此:
控制台现在需要两个输入,即一个char和一个int,我理解是因为程序切换到上面代码的'else'部分,但我想要一个场景,即使生命不止一个,如果用户输入像‘U’, ’D’, ’L’, ’R’, ‘Z’ (undo move) or ’M’ (mark player movement trail)
之类的字符,程序将只读取它并执行函数而不需要int。因为截至目前,当生命高于一,我输入一个字符并按下输入时,它会打击我:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:658)
提前感谢您的建议和指示。
如果您需要进一步澄清,请与我们联系。