全部代码:
import java.util.Random;
import java.util.Scanner;
public class NimGame {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int stones = 0;
int upperBound = 0;
System.out.print("Please enter your name:");
String name = scn.nextLine();
while (true) {
System.out.print("Please enter upper bound of "
+ "stone removal(m):");
upperBound = scn.nextInt();
scn.nextLine();
System.out.print("Please enter initial number "
+ "of stones:(n)");
stones = scn.nextInt();
scn.nextLine();
while (stones != 0) {
System.out.print(stones + " stones left:");
for (int i = 0; i < stones; i++) {
System.out.print(" *");
}
System.out.println();
System.out.print(name + "'s turn, remove how many?");
int remove = scn.nextInt();
scn.nextLine();
if (stones - remove == 0) {
System.out.println("Game Over");
System.out.println("computer wins!");
System.out.println();
break;
}
stones -= remove;
System.out.print(stones + " stones left:");
for (int i = 0; i < stones; i++) {
System.out.print(" *");
}
System.out.print("computer's turn - remove ");
int computerRemove;
Random random = new Random();
if (stones % (upperBound + 1) == 1) {
if (stones > upperBound)
computerRemove = random.nextInt(upperBound) + 1;
else computerRemove = random.nextInt(stones) + 1;
} else {
if (stones % (upperBound + 1) == 0)
computerRemove = upperBound;
else computerRemove = stones % (upperBound + 1) - 1;
}
System.out.println(computerRemove);
if (stones - computerRemove == 0) {
System.out.println("Game Over");
System.out.println(name + " wins!");
System.out.println();
break;
}
stones -= computerRemove;
}
System.out.print("Do you want to play again (Y/N):");
String cmd = scn.nextLine();
if ("N".equals(cmd)) {
scn.close();
break;
}
}
}
}