我在高中学习Java课程,我们必须做一个小游戏。在这个游戏中,两个人交替拾取石头,而最后选择一个的人是胜利者。
我无法弄清楚如何制作一个变量,以便我可以减去第一个人从13开始的宝石数量,因为13是宝石的总数。然后使用这个数字,并从第一个人拿走他们的石头后留下的石头中减去第二个人的石头数量。
我不太确定我是以错误的方式来做这件事还是有更好的方法。有没有办法从中做出变量?
public class stones {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EasyReader console = new EasyReader();
int pick1 = 0;
int total = 13;
System.out.println("In this game, two players alternate taking 1,2, or 3 stones ");
System.out.println("from a pile of 13 stones until no stones are left. ");
System.out.println("The last person to pick up a stone is the winner");
System.out.println("Player 1, how many stones do you wish to take?");
pick1 = console.readInt();
while (pick1 >= 4) {
System.out.println("You have entered an invalid number!");
System.out.println("Try again. How many stones do you wish to take?");
pick1 = console.readInt();
if (pick1 <= 3) {
System.out.println(+total+ - +pick1+ " Stones left");
}
}
}
}
答案 0 :(得分:0)
好吧,你现在拥有它的方式永远不会有效,因为有多种原因(例如,你计划为每一轮创建一个新的pick
变量)。我想介绍一些变量。
stonesLeft
跟踪留下的宝石数量,显然用石头总数初始化。currentPick
保持玩家想要挑选的宝石数量
那一轮(所以不要为每一轮制作新的变量)。currentPlayer
跟踪其播放器的转弯情况。我们想
在1
和2
之间切换,一个简单的方法是使用。{
模运算符。提示:%2 + 1
现在,主要的想法是,当你还剩下石头时(例如stonesLeft != 0
),你想再去一轮。因此,我们将询问用户他想要挑选多少石头并将其存储在我们的currentPick
变量中。然后我们将更新我们的currentPlayer
变量。现在是棘手的部分。基本上,用户可以做三个烦人的事情。事情(实际上更多,但对你而言,这已经足够了);
< 1
> 3
1
,2
或3
)
stonesLeft
变量为负数。因此,如果其中一件事发生,我们希望用户重新考虑他们的输入,并在我们的currentPick
变量下再次注册。一旦我们确定输入是合法的,我们可以将stonesLeft
变量递减currentPick
并告知剩下多少石头。然后我们回到开头,检查是否还有石头,如果是,我们再去一轮。我想你可以从这里做到。
编辑:对于任何感兴趣的未来读者,这就是我在答案中使用提示的方式。如果您打算自己编程,请先这样做。通过查看解决方案而不是主动编程,你只是在欺骗自己。
import java.util.Scanner;
public class Stones {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int stonesLeft = 13;
int currentPick = 0;
int currentPlayer = 2;
System.out.println("In this game, two players alternate taking 1, 2 or 3 stones\n"
+ "from a pile of 13 stones until no stones are left.");
System.out.println("The last person to pick up a stone is the winner!");
while (stonesLeft != 0) {
currentPlayer = currentPlayer%2 + 1;
System.out.println("\nPlayer " + currentPlayer + ", how many stones do you wish to take?");
currentPick = sc.nextInt();
while (currentPick < 1 || currentPick > 3 || stonesLeft - currentPick < 0) {
System.out.println("You have entered an invalid number!");
System.out.println("Try again. How many stones do you wish to take? (1, 2, 3)");
currentPick = sc.nextInt();
}
stonesLeft -= currentPick;
System.out.println(stonesLeft + " stone(s) left!");
}
sc.close();
System.out.println("Player " + currentPlayer + " won!");
}
}