每次使用Math.random()调用函数时,我都试图获取随机数。无论出于何种原因,每次通话都选择相同的两个数字(第一次通话只能随机选择)
RockpaperScissorsLizardSpock()对象有一个用于调用随机数的方法,但是我通过让play方法直接获取随机数而绕过了测试。
public static void main(String[] args) {
// TODO code application logic here
RockPaperScissorsLizardSpock game = new RockPaperScissorsLizardSpock();
while(game.getConsecutiveWins()<4){
game.play(((int)(Math.random()*5)+1),((int)(Math.random()*5)+1));
}
if (game.getLastWinner()==1){
System.out.println(System.lineSeparator() + "Player 1 Wins!");
} else{
System.out.println(System.lineSeparator() + "Player 2 Wins!");
}
}
while循环应该一直运行,直到连续赢得四局为止。
玩家1选择摇滚 玩家2选择Spock。 Spock。击败岩石。玩家2获胜
玩家1选择摇滚 玩家2选择Spock。 Spock。击败岩石。玩家2获胜
玩家1选择摇滚 玩家2选择Spock。 Spock。击败岩石。玩家2获胜
玩家1选择摇滚 玩家2选择Spock。 Spock。击败岩石。玩家2获胜
玩家2获胜!
以下是与游戏相关的调用方法:
public void play(int player1, int player2){
consecutiveWins = 0;
lastWinner = 0;
while (consecutiveWins<4){
int p1Choice = player1;
int p2Choice = player2;
int pWinner = 0;
switch (p1Choice) {
case 1://Player 1 rock
System.out.println("Player 1 Chooses Rock");
if (p2Choice == 1){ //Player 1 rock vs Player 2 rock - tie
pWinner = 0;
} else if (p2Choice == 2){
pWinner = 2;//P2 paper - P2
} else if (p2Choice == 3){// P2 Scissors - P1 Wins
pWinner = 1;
} else if (p2Choice == 4){//P2 Lizard - P1 Win
pWinner = 1;
}else {//p2 spock = P2 Win
pWinner = 2;
}
break;
case 2: //P1 paper -- not done
System.out.println("Player 1 Chooses Paper");
if (p2Choice == 1){ //Player 1 rock vs Player 2 rock - tie
pWinner = 0;
} else if (p2Choice == 2){
pWinner = 2;//P2 paper - P2
} else if (p2Choice == 3){// P2 Scissors - P1 Wins
pWinner = 1;
} else if (p2Choice == 4){//P2 Lizard - P1 Win
pWinner = 1;
}else {//p2 spock = P2 Win
pWinner = 2;
}
break;
case 3: //P1 scissors -- not done
System.out.println("Player 1 Chooses Scissors");
if (p2Choice == 1){ //Player 1 rock vs Player 2 rock - tie
pWinner = 0;
} else if (p2Choice == 2){
pWinner = 2;//P2 paper - P2
} else if (p2Choice == 3){// P2 Scissors - P1 Wins
pWinner = 1;
} else if (p2Choice == 4){//P2 Lizard - P1 Win
pWinner = 1;
}else {//p2 spock = P2 Win
pWinner = 2;
}
break;
case 4: //P1 lizard -- not done
System.out.println("Player 1 Chooses Lizard");
if (p2Choice == 1){ //Player 1 rock vs Player 2 rock - tie
pWinner = 0;
} else if (p2Choice == 2){
pWinner = 2;//P2 paper - P2
} else if (p2Choice == 3){// P2 Scissors - P1 Wins
pWinner = 1;
} else if (p2Choice == 4){//P2 Lizard - P1 Win
pWinner = 1;
}else {//p2 spock = P2 Win
pWinner = 2;
}
break;
case 5: //P1 Spock -- not done
System.out.println("Player 1 Chooses Spock");
if (p2Choice == 1){ //Player 1 rock vs Player 2 rock - tie
pWinner = 0;
} else if (p2Choice == 2){
pWinner = 2;//P2 paper - P2
} else if (p2Choice == 3){// P2 Scissors - P1 Wins
pWinner = 1;
} else if (p2Choice == 4){//P2 Lizard - P1 Win
pWinner = 1;
}else {//p2 spock = P2 Win
pWinner = 2;
}
break;
}
if(pWinner==1){
System.out.println("Player 2 chooses " + convert(p2Choice));
System.out.println(convert(p1Choice) + " beats " +
convert(p2Choice) + " Player 1 wins" + System.lineSeparator());
if(lastWinner == PLAYER1){
consecutiveWins +=1;
}else{
lastWinner = PLAYER1;
consecutiveWins = 1;
}
} else if (pWinner==2){
System.out.println("Player 2 chooses " + convert(p2Choice));
System.out.println(convert(p2Choice) + " beats " +
convert(p1Choice) + " Player 2 wins" + System.lineSeparator());
if(lastWinner == PLAYER2){
consecutiveWins +=1;
}else{
lastWinner = PLAYER2;
consecutiveWins = 1;
}
} else {
System.out.println("Player 2 also chooses " + convert(p2Choice));
System.out.println("It's a tie!");
}
}
}
答案 0 :(得分:2)
play方法中的循环是多余的,应该删除。
while (consecutiveWins<4){
编辑:为防止无限循环,您还必须移动
consecutiveWins = 0;
退出play方法(可能进入构造方法)