J'essaye de créer un jeu de "Rock Paper Scissors Lizard Spock", et je veux que l'utilisateur soit en mesure de mettre les entiers affectés aux variables (Rock = 0, Paper = 1, Scissors = 2, Lizard = 3 et Spock = 4)
et aussi pouvoir saisir les mots "Rock", "Paper", "Scissors", "Lizard"
ou " Spock "
. Pourriez-vous m'aider à inclure une partie du code où je peux attribuer les entrées de chaîne à des entiers. Je ne veux pas non plus changer le cadre principal du code. Je sais aussi que le site Web dit de ne pas coller le fichier entier, mais je ne peux pas penser à une autre façon de montrer mon problème. Veuillez noter que j'utilise un site Web appelé SoloLearn . Toute aide serait grandement appréciée.
import java.util.Scanner; public class RockPaperScissorsLizardSpock { final static int ROCK = 0; final static int PAPER = 1; final static int SCISSORS = 2; final static int LIZARD = 3; final static int SPOCK = 4; public static void main(String[] args) { double r = Math.random(); int computerChoice = (int)(3.0 * r); Scanner input = new Scanner(System.in); System.out.print("Enter 0 for Rock, 1 for Paper, 2 for Scissors, 3 for Lizard, 4 for Spock: "); int playerChoice = input.nextInt(); System.out.println(computerChoice); int playerChoice = 0; switch (playerChoice) { case "Rock": playerChoice = 0; break; case "Paper": playerChoice = 1; break; case "Scissors": playerChoice = 2; case "Lizard": playerChoice = 3; case "Spock": playerChoice = 4; if (computerChoice == playerChoice) { System.out.println("Tie"); } else if (computerChoice == ROCK && playerChoice == SCISSORS) { System.out.println("I chose Rock,You chose Scissors, Rock crushes Scissors, You lose."); } else if (computerChoice == SCISSORS && playerChoice == PAPER) { System.out.println("I chose Scissors, You chose Paper, Scissors cut Paper, You lose."); } else if (computerChoice == PAPER && playerChoice == ROCK) { System.out.println("I chose Paper,You chose Rock, Paper covers Rock, You lose."); } else if (computerChoice == LIZARD && playerChoice == PAPER) { System.out.println("I chose Lizard, You chose Paper, Lizard eats Paper, You lose."); } else if (computerChoice == SPOCK && playerChoice == SCISSORS) { System.out.println("I chose Spock, You chose Scissors, Spock smashes Scissors, You lose."); } else if (computerChoice == ROCK && playerChoice == LIZARD) { System.out.println("I chose Rock, You chose Lizard, Rock crushes Lizard, You lose."); } else if (computerChoice == SCISSORS && playerChoice == LIZARD) { System.out.println("I chose Scissors, You chose Lizard, Scissors decapitates Lizard, You lose."); } else if (computerChoice == SPOCK && playerChoice == PAPER) { System.out.println("I chose Spock, You chose Paper, Paper disproves Spock, You lose."); } else if (computerChoice == SPOCK && playerChoice == ROCK) { System.out.println("I chose Spock, You chose Rock, Spock vaporizes Rock, You lose."); } else if (computerChoice == SCISSORS && playerChoice == ROCK) { System.out.println("I chose Scissors, You chose Rock, Rock crushes Scissors, You win."); } else if (computerChoice == PAPER && playerChoice == SCISSORS) { System.out.println("I chose Paper, You chose Scissors, Scissors cut Paper, You win."); } else if (computerChoice == ROCK && playerChoice == PAPER) { System.out.println("I chose Rock, You chose Paper, Paper covers Rock,You win."); } else if (computerChoice == PAPER && playerChoice == LIZARD) { System.out.println("I chose Paper, You chose Lizard, Lizard eats Paper, You win."); } else if (computerChoice == SCISSORS && playerChoice == SPOCK) { System.out.println("I chose Scissors, You chose Spock, Spock smashes Scissors, You win."); } else if (computerChoice == LIZARD && playerChoice == ROCK) { System.out.println("I chose Lizard, You chose Rock, Rock crushes Lizard, You win."); } else if (computerChoice == LIZARD && playerChoice == SCISSORS) { System.out.println("I chose Lizard, You chose Scissors, Scissors decapitates Lizard, win."); } else if (computerChoice == PAPER && playerChoice == SPOCK) { System.out.println("I chose Paper, You chose Spock, Paper disproves Spock, You win."); } else if (computerChoice == ROCK && playerChoice == SPOCK) { System.out.println("I chose Rock, You chose Spock, Spock vaporizes Rock, You win."); }else{ System.out.println("Error"); } } } }
3 Réponses :
Vous pouvez mettre vos entrées autorisées dans une carte
, la clé
étant le texte et la valeur
étant le numéro associé:
Scanner in = new Scanner(System.in); int playerChoice = -1; String input; while(!ALLOWED_INPUTS.containsValue(playerChoice)) { input = in.nextLine(); if (ALLOWED_INPUTS.containsKey(input)) playerChoice = ALLOWED_INPUTS.get(input); else { try { playerChoice = Integer.parseInt(input); } catch(NumberFormatException e) {} } } System.out.println("You choosed choice number " + playerChoice);
En supposant: soit des mots, soit des nombres entiers sont entrés comme entrées.
Étapes pour cette solution:
String choice = input.next(); if (choice.matches("\\d+")) playerChoice = Integer.parseInt(choice); switch (choice.toUpperCase()) { case "ROCK": playerChoice = 0; break; case "PAPER": playerChoice = 1; break; case "SCISSORS": playerChoice = 2; break; case "LIZARD": playerChoice = 3; break; case "SPOCK": playerChoice = 4; break; }
Si vous voulez que votre utilisateur puisse saisir 2 valeurs pour 1 condition, vous pouvez convertir la valeur de playerChoice en chaîne pour une chaîne temporaire, puis faire un changement de cas comme suit:
String tempString = Integer.toString(playerChoice); switch (tempString) { case "0": case "Rock": playerChoice = 0; break; case "1": case "Paper": playerChoice = 1; break; case "2": case "Scissors": playerChoice = 2; break; case "3": case "Lizard": playerChoice = 3; break; case "4": case "Spock": playerChoice = 4; break; }
Merci pour cela, mais où dois-je mettre cela dans le code et que dois-je supprimer?
utilisez à la place de votre switch case block mine et et supprimez int playersChoice = 0; cela pourrait vous donner une erreur .... parce que vous l'avez déjà créé avant. En Java, vous ne pouvez pas créer une variable avec le même nom deux fois. Mais vous pouvez créer des méthodes avec le même nom mais paramètres différents .
int playerChoice = input.nextInt (); -> cela lit un int. pour lire un mot: String word = input.next ();