私は小さな戦艦ゲームを作っています。私がゲームを実行し、ユーザーの勝利をシミュレートすると、ユーザーが勝ったにもかかわらず、さらに1組の座標が求められます。もう1組の座標を入力した後、ゲームはあなたが勝ったと言います。戦艦:1つの入力ループが多すぎます
誰かが問題を特定できないようですね。
おかげで、ここで
は私のコードは
あるimport java.util.Random;
import java.util.Scanner;
public class Battleships {
public static void main(String[] args) {
System.out.println("You'll have 10 tries to destroy the ship");
String[][] displayGrid = {
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" }
};
String[][] internalGrid = {
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" },
{ "O", "O", "O", "O", "O" }
};
Random dice1 = new Random();
int r = 0;
r = dice1.nextInt(4);
Random dice2 = new Random();
int c = 0;
c = dice2.nextInt(5);
// Generates location of 2x1 ship
internalGrid[r][c] = "X";
internalGrid[r + 1][c] = "X";
// inserts random location into internal grid
for (int row = 0; row < displayGrid.length; row++) {
for (int col = 0; col < displayGrid[row].length; col++) {
System.out.print(displayGrid[row][col] + "\t");
}
System.out.println();
}
System.out.println();
int ucol = 0;
int urow = 0;
int hits = 0;
for (int row = 0; row < internalGrid.length; row++) {
for (int col = 0; col < internalGrid[row].length; col++) {
System.out.print(internalGrid[row][col] + "\t");
}
System.out.println();
}
//print internal grid for debugging
for (int i = 0; i < 10; i++) {
do {
Scanner row1 = new Scanner(System.in);
System.out.println("Enter a row between 1 and 5");
urow = row1.nextInt() - 1;
}
while (urow > 4 || urow < 0);
do {
Scanner col1 = new Scanner(System.in);
System.out.println("Enter a column between 1 and 5");
ucol = col1.nextInt() - 1;
}
while (ucol > 4 || ucol < 0);
if (internalGrid[r][c] == "H" && internalGrid[r + 1][c] == "H") {
System.out.println("You win!!");
i= 10;} //i think the issue is here??
else if (internalGrid[urow][ucol] == "X") {
System.out.println("Hit!!");
internalGrid[urow][ucol] = "H";
}
else if (internalGrid[urow][ucol] == "H") {
System.out.println("You already hit that location");}
else {
System.out.println("Miss :(");
}
}
System.out.println("Game Finished!!");
}
}
:
をそして、これと交換してください。 @CoderinoJavarino –
@JorgeCampos申し訳ありませんが、私はあなたが何を意味するか説明できますか? –
あなたのwhileコードは何もしないと言っていた別のユーザーコメントがありましたが、最初の場所では明確ではないので、それはその上の 'do'コードに属しています。 –