Итак, я должен сделать Java-игру в стиле Nim .... и мне удалось сделать большую часть этого ... У меня просто есть пара вопросов, которые я смущен on:Игра Nim Loop
Вопрос 1: Программа выполняется нормально, и она даже запускается один раз, но после прохождения кода один раз программа завершает работу ... Мне нужна помощь, чтобы понять, почему это происходит (я использую неправильный цикл?)
Вопрос 2: Почему программа всегда выбирает компьютер в так называемом «интеллектуальном режиме»?
Любая помощь будет очень признательна. Спасибо вам, ребята: D
Вот мой код:
import java.util.*;
public class GameOfNim
{
public static void main (String [] args)
{
Scanner in = new Scanner (System.in);
Random num = new Random();
int numberLeft = num.nextInt(101-10) + 10;
int computerMode = num.nextInt(1);
int subtraction = numberLeft;
boolean turn = num.nextBoolean();
System.out.println ("The number you start out with is: " + numberLeft);
if (computerMode == 0)
{
System.out.println ("The computer is in smart mode");
}
if (computerMode == 1)
{
System.out.println ("The computer is in dumb mode");
}
while (numberLeft > 1)
{
if (turn == true)
{
System.out.println ("It is your turn...");
System.out.printf ("Please enter the number you wish to take from the pile (Remember it has to be less than " + numberLeft/2 + "): ");
subtraction = in.nextInt();
numberLeft -=subtraction;
System.out.println ("The number left is " + numberLeft);
turn = false;
}
if (turn ==false)
{
System.out.println ("It is the computer's turn...");
if (computerMode == 0)
{
numberLeft = smartComputer(numberLeft);
System.out.println ("The number left is " + numberLeft);
}
if (computerMode == 1)
{
numberLeft -= num.nextInt(numberLeft/2);
System.out.println ("The number left is " + numberLeft);
}
turn = true;
return;
}
}
if (numberLeft <= 1)
{
if (turn = false)
{
System.out.println ("You Win!");
}
else
{
System.out.println ("You're horrible...you lost to a computer.");
}
}
}
public static int smartComputer (int num)
{
int power = 2;
while (power < num)
{
power *=2;
}
power /= 2;
num = power-1;
return num;
}
}
Ну, на самом деле, я понял, что я сделал цикл, я просто должен был избавиться от заявления о возврате, которое я написал после его окончания ... но я до сих пор не знаю, почему он не выберет тупую версию ... – PratikM
Для вашего второго вопроса 'int computerMode = num.nextInt (1);' всегда будет возвращать '0', входя в' smartmode'. И для вашего 1-го вопроса вы можете добавить еще несколько объяснений, что происходит? – Smit