Alors j'écris un programme où deux utilisateurs lancent un dé à tour de rôle. Si l'utilisateur jette un 1 alors son tour se termine, si l'utilisateur lance 2-6, je suis censé garder un total cumulé des points marqués jusqu'à ce que l'utilisateur décide de rouler à nouveau et risque ses points stockés pour le tour ou sauvegarde le.J'ai du mal à décider où placer une boucle while dans mon programme de jeu de dés de cochon
Le problème que j'ai en ce moment concerne l'endroit où je devrais placer une boucle while dans mon code pour que l'utilisateur puisse jouer pendant une durée indéterminée. Idéalement, je voudrais sortir de la boucle while chaque fois que l'utilisateur obtient un 1, mais j'ai aussi des problèmes avec la façon de mettre à jour ce numéro à chaque fois en dehors de la boucle.
Toute aide serait grandement appréciée! Note: Le jeu n'est pas encore terminé, j'essaye d'écrire certains de ces problèmes avant de passer à autre chose, aussi l'endroit où je voudrais mettre ma boucle while est dans la méthode takeTurn.
Merci encore!
Voici mon code:
import java.util.*;
public class PigDice {
// when a player reaches this number, they win
public static final int WINNING_SCORE = 50;
public static final int DIE = 6; // sides on a die.
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
Random rand = new Random();
String winner = playGame(keyboard, rand);
System.out.println(winner + " wins!");
}
public static String playGame(Scanner scanner, Random rand) {
int score1 = 0; // player 1's score
int score2 = 0; // player 2's score
// play till someone wins
while (score1 < WINNING_SCORE && score2 < WINNING_SCORE) {
score1 += takeTurn(scanner, rand, 1, score1);
System.out.println("Player 1 score: " + score1);
System.out.println("***************************");
if (score1 < WINNING_SCORE) {
score2 += takeTurn(scanner, rand, 2, score2);
System.out.println("Player 2 score: " + score2);
System.out.println("***************************");
}
}
if (score1 >= WINNING_SCORE) {
return "Player 1";
}
else {
return "Player 2";
}
}
public static int takeTurn(Scanner scanner, Random rand, int player, int score) {
int random = rand.nextInt(DIE)+ 1;
System.out.println("Player " + player + " rolls: " + random);
int firstRoll = random;
int roundTotal = 0;
if (random > 1) {
System.out.println("Player " + player + " total for this round: " + firstRoll);
roundTotal += firstRoll;
System.out.print("Roll again? (y or n) : ");
String getAnswer = scanner.nextLine();
System.out.println();
if ("y".equalsIgnoreCase(getAnswer)) {
System.out.println("Player " + player + " rolls: " + random);
}else if ("n".equalsIgnoreCase(getAnswer)) {
System.out.println("Player " + player + " score: " + roundTotal);
}
}else {
System.out.println("Player " + player + ": turn ends with no new points.");
System.out.println("Player " + player + " score: " + score);
}
return WINNING_SCORE;
}
}
Merci les gars! Je l'ai compris, et tout fonctionne! Merci pour votre temps!! – user3643284