2017-07-24 2 views
3

Salut les gars, j'ai besoin d'aide pour cette question: Un jeu de dés est joué avec deux dés à six faces. Un utilisateur jouant le jeu lancera les deux dés et deux nombres aléatoires entre un et six seront générés. La somme des deux nombres sera utilisée pour décider de l'étape suivante. Si la somme est de 2,3 ou 12 alors le joueur gagne. Si la somme est de 7 ou 11 alors il/elle perd. Si la somme est de 4, 5, 6, 8, 9 ou 10, le programme relance automatiquement les dés jusqu'à ce que le joueur gagne ou perde. Après chaque lancer de dés, le joueur sera invité à entrer une entrée. Le joueur devrait décider si le jeu doit continuer ou non. La quantité de parties gagnées et perdues devrait également être affichée après chaque lancer de dés. J'ai réussi à obtenir la première partie au travail, mais incapable de travailler comment demander à l'utilisateur si elles souhaitent continuer ou combien de jeux ils ont gagné/perduComment puis-je demander si l'utilisateur souhaite continuer le jeu après chaque lancer de dés en java utilisant netbeans

public class DiceGame { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     while (true) { 
      int dice1=(int)(Math.random()*6+1); 
      int dice2=(int)(Math.random()*6+1); 
      int sum = dice1 + dice2; 

      System.out.println("Roll: total = " + sum); 

      if (sum==2 || sum==3 || sum==12) { 
       System.out.println("Sorry with a " + sum + " you loose :("); 
       break; 
      } 
      else if(sum==7 || sum==11) { 
       System.out.println("With a " + sum + " you win :)"); 
       break; 
      } 
     } 
    } 

} 
+0

une Make instruction if où le programme vous demandera, et si vous choisissez que vous ne voulez pas simplement continuer à ajouter un 'break;'. Je suppose que vous savez déjà comment obtenir des données à partir de l'entrée standard et tout ça. –

+0

@Bec - ma solution a les deux saveurs dont vous avez besoin (avec l'entrée de l'utilisateur à travers le scanner et aucune entrée de l'utilisateur avec le rouleau automatique quand 4 5 6 8 9 10).Veuillez accepter ma réponse et voter si cela fonctionne pour vous! – JRG

+0

@Bec - s'il vous plaît accepter ma réponse et voter, s'il a résolu votre problème! – JRG

Répondre

3

Scanner peut être utilisé pour indiquer à l'utilisateur de se demander s'il/elle veut continuer ou non .

Vous pouvez même suivre non. de fois les dés ont été roulés.

import java.util.Scanner; 

public class DiceGame { 

    public static int attempt = 1; 
    /** 
    * @param args 
    *   the command line arguments 
    */ 
    public static void main(String[] args) { 

     Scanner scanner = new Scanner(System.in); 
     int dice1 = (int) (Math.random() * 6 + 1); 
     int dice2 = (int) (Math.random() * 6 + 1); 
     int sum = dice1 + dice2; 

     while (true) { 
      System.out.println(); 
      System.out.println("Rolling dice for " + attempt + " time!"); 

      dice1 = (int) (Math.random() * 6 + 1); 
      dice2 = (int) (Math.random() * 6 + 1); 
      sum = dice1 + dice2; 

      System.out.println("Roll: total = " + sum); 

      if (sum == 2 || sum == 3 || sum == 12) { 
       System.out.println("Sorry with a " + sum + " you loose :(!"); 
       System.out.println(); 
       break; 
      } else if (sum == 7 || sum == 11) { 
       System.out.println("With a " + sum + " you win :)!"); 
       System.out.println(); 
       break; 
      } 
      System.out.println(); 
      System.out.println("Do you wish to continue? Press 'y' for YES or ANY key for EXIT"); 
      if (!scanner.next().equalsIgnoreCase("y")) { 
       break; 
      } 
      attempt++; 
     } 
     System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!"); 
    } 
} 

EDIT: Si vous voulez rouler les dés automatiquement lorsque la somme est de 4 5 6 8 9 10 alors vous pas plus besoin Scanner à savoir l'entrée d'utilisateur de continuer ou non.

Voici la solution pour le même.

public class DiceGame { 

    public static int attempt = 1; 

    public static void main(String[] args) { 

     int dice1 = 0; 
     int dice2 = 0; 
     int sum = 0; 

     while (true) { 
      System.out.println(); 
      System.out.println("Rolling dice for " + attempt + " time!"); 

      dice1 = (int) (Math.random() * 6 + 1); 
      dice2 = (int) (Math.random() * 6 + 1); 
      sum = dice1 + dice2; 

      System.out.println("Roll: total = " + sum); 

      if (sum == 2 || sum == 3 || sum == 12) { 
       System.out.println("Sorry with a " + sum + " you loose :(!"); 
       System.out.println(); 
       break; 
      } else if (sum == 7 || sum == 11) { 
       System.out.println("With a " + sum + " you win :)!"); 
       System.out.println(); 
       break; 
       // this will roll the dices automatically 
       // when sum is 4, 5, 6, 8, 9 or 10 
      } else { 
       System.out.println(); 
       System.out.println("With " + sum + " dices are rolled again automatically!!"); 
       attempt++; 
      } 
     } 
     System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!"); 
    } 
} 

Sample Run

Rolling dice for 1 time! 
Roll: total = 4 

With a 4, dices are rolled again automatically!! 

Rolling dice for 2 time! 
Roll: total = 6 

With a 6, dices are rolled again automatically!! 

Rolling dice for 3 time! 
Roll: total = 2 
Sorry with a 2 you loose :(! 

Thanks for playing dice game, you rolled the dice 3 times! 
+0

Salut ce semi-travaillé il déclare tentative n'existent pas et je ne sais pas quoi placer ici int tentative =; pour qu'il montre combien de fois les dés ont été lancés – Bec

+0

Vous devez déclarer et initialiser les tentatives comme je l'ai fait, public static int try = 1; – JRG

+0

Si la somme est 4, 5, 6, 8, 9 ou 10 alors le programme lance automatiquement les dés jusqu'à ce que le joueur gagne ou qu'il perde. Sais-tu comment faire cela? – Bec

1

Vous pouvez utiliser la classe Java Scanner pour demander utilisateur pour les entrées.

Dans votre boucle while, demandez à l'utilisateur les entrées. Vous devrez peut-être modifier votre condition de boucle while. En fonction de l'entrée de l'utilisateur, utilisez «frein» pour quitter la boucle. Ça devrait le faire.

Scanner Reference

1

I créé un procédé playAgainMessage qui renvoie un int. Cela décide si l'utilisateur va jouer à nouveau ou non. Check it out:

import java.util.Scanner; 

public class DiceGame { 
    private static final int PLAY = 1; 
    private static final int DO_NOT_PLAY = 2; 
    private static int choice = 1; 

    public static void main(String[] args) { 
     while (choice == PLAY) { 
      int dice1=(int)(Math.random()*6+1); 
      int dice2=(int)(Math.random()*6+1); 
      int sum = dice1 + dice2; 

      System.out.println("Roll: total = " + sum); 

      if (sum==2 || sum==3 || sum==12) { 
       System.out.println("Sorry with a " + sum + " you loose :("); 
       choice = playAgainMessage(); 
      } 
      else if(sum==7 || sum==11) { 
       System.out.println("With a " + sum + " you win :)"); 
       choice = playAgainMessage(); 
      } 
     } 
     if (choice == DO_NOT_PLAY) { 
      System.out.println("Good bye..."); 
     } 
    } 

    private static int playAgainMessage() { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Would you like to play again? '1' for yes, '2' for no"); 
     int choice = input.nextInt(); 
     input.close(); 
     if(choice == PLAY){ 
      System.out.println("Rolling..."); 
      return PLAY; 
     } else { 
      return DO_NOT_PLAY; 
     } 
    } 
} 

Vous pouvez appeler la méthode playAgainMessage chaque fois que vous le souhaitez, ce qui le rend agréable et facile à lire.

Ceci continuera à jouer jusqu'à ce que l'utilisateur entre autre chose que '1'. Essayez de l'exécuter pour voir la sortie exacte.

1

Vous pouvez utiliser une boucle do{}while();, il va jouer une fois, puis demander à l'utilisateur de nouveau:

Scanner sc = new Scanner(System.in); 
String input = ""; 
do { 
    int // ... 

    System.out.println("Roll: total = " + sum); 

    if (sum == 2 || sum == 3 || sum == 12) { 
     // ... 
    } else if (sum == 7 || sum == 11) {  
     // ... 
    } 

    System.out.println("If you want to continue, write 'y' : "); 
    input = sc.nextLine(); 
} while (input.equalsIgnoreCase("y"));