我已经设计了战舰游戏,只有一艘船隐藏,现在我必须实现另一艘船到游戏中。我是java新手,想知道是否有人能给我一个简单的方法来解决这个问题。我需要创建另一个方法还是调整display river方法?
public static void displayRiver(int[] river, boolean showShip) {
System.out.println();
System.out.print("|");
for (int val : river) {
switch (val) {
case -1: // No Ship
System.out.print("x");
break;
case 0: // Unknown
System.out.print(" ");
break;
case 1: // Ship Found
System.out.print(showShip ? "Y" : " ");
break;
}//switch
System.out.print("|");
}//for
System.out.println();
System.out.println();
}//displayRiver
// main method
public static void main(String[] arg) {
int riverLength = promptForInt("Please, enter the river lenght");
int [] shipArray = new int[riverLength];
int randomBattleshipLocation = new Random().nextInt(riverLength);
shipArray[randomBattleshipLocation] = 1;
boolean showShip = false ;
int userGuess;
do
{
displayRiver (shipArray, false);
userGuess = promptForInt(String.format("Guess, enter a location from 1 to " + riverLength));
userGuess = userGuess -1;
if(shipArray[userGuess] == 1)
{
System.out.println("Boom! ");
showShip = true;
displayRiver(shipArray, true);
}
else if(shipArray[userGuess] == -1)
{
System.out.println("Location was already hit, try again! ");
}
else if(shipArray[userGuess] == 0)
{
System.out.println("Splash...");
shipArray[userGuess] = -1 ;
}
} while(!showShip);
System.exit(0);
}
}
1条答案
按热度按时间jdzmm42g1#
你的逻辑似乎是
1
在数组中表示一艘飞船,而你的飞船的宽度显然永远不会超过一艘。您当前使用以下命令创建一艘船
所以你可以把它转换成一个创建战舰的方法,然后对多艘战舰调用它。只是要确保你没有把一艘船放在另一艘船的上面,或者犯下另一个逻辑错误(比如试图把5艘船放进一条4号的河中,它会一直循环试图为船只寻找空间)。
伪代码和非伪代码: