2013-06-09 2 views
-1

Я сделал этот код, и все работает нормально, но я бы хотел, чтобы пользователь нажал кнопку ввода, чтобы продолжить показ, пока они не выиграют или не проиграют. Любые предложения были бы замечательными.Как попросить пользователя продолжить?

import hsa.Console; 
import java.util.Scanner; // Needed for the Scanner class 
import java.util.Random; 

public class Craps_Final1 
{ 
    static Console c; 
    public static void main(String [] args) 
    { 
      c = new Console(); 

      int point; // Dices Rolled 
      int sum; // Sum of the Dices 
      char input; // Menu Selector 
      char menu; // return menu 
      String player;// Name of player 
      int bank;// money holder for the player 
      int bet; // bet per per round 
      String player2;// Name of player 
      int bank2;// money holder for the player 
      int bet2; // bet per per round 
      int game; // input for 1 player or 2 player 
      int loop=1; // loop for game 



      while(true) 
      { 

       input = menu(); 
       if(input == 'M' || input == 'm') 
       { 

        while(true) 
        { 
         menu = returnMenu(); 
         if(menu == 'Q' || menu == 'q') 
         { 
           c.close(); 
           break; 
         } 

         if(menu == 'P' || menu == 'p') 
         { 
           c.clear(); 

        while(true) 
        { 

         Random randomNumbers = new Random(); 

         Scanner keyboard = new Scanner(System.in); 
         c.println ("would you like to play 1 player or 2 player"); 
         game=c.readInt(); 
         c.clear(); 

         if(game==1) 
         { 

         //PLAYER 1 
         c.println("Please enter your name"); 
         player=c.readString(); 
         c.clear(); 
         c.println("Please enter how much you would like to gamble with today?"); 
         bank=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + bank); 
         c.println("How much would you like to Bet?"); 
         bet=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
         c.println("Bet:" + bet); 
         c.println("Available:" + (bank));      

         c.println("First roll.\n"); 
         sum = roleDice(randomNumbers); 
         c.println("Sum:\t" + sum + "\n"); 

         switch (sum) 
         { 

           case 7: case 11: 
            c.println(player + " " + "wins."); 
            bank=(bet*2)+bank; 
            c.println("Your Win has been added to your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(23,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break; 

           case 2: case 3: case 12: 
            c.println(player + " " + "loses."); 
            c.println("Your Loss has been deducted from your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            bank=bank-bet; 
            c.setCursor(23,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break; 

           case 4: case 5: case 6: case 8: case 9: case 10: 
            c.println(player + " " + "Your Bet Stays and your available balance has not changed"); 
            c.setCursor(25,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break;        
         }        
         } 
         else 
         { 
           //PLAYER 1 and PLAYER 2 
         c.println("Player 1 enter your name"); 
         player=c.readString(); 
         c.clear(); 
         c.println("Player 2 enter your name"); 
         player2=c.readString(); 
         c.clear(); 
         c.println("Player 1 how much you would like to gamble with today ?"); 
         bank=c.readInt(); 
         c.clear(); 
         c.println("Player 2 how much you would like to gamble with today ?"); 
         bank2=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + bank); 
         c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + bank2); 
         c.println("Player 1 how much would you like to Bet ?"); 
         bet=c.readInt(); 
         c.println("Player 2 how much would you like to Bet ?"); 
         bet2=c.readInt(); 
         c.clear(); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
         c.println("Bet:" + bet); 
         c.println("Available:" + (bank)); 
         c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
         c.println("Bet:" + bet2); 
         c.println("Available:" + (bank2)); 
         c.clear(); 
         c.println("First roll.\n"); 
         sum = roleDice(randomNumbers); 
         c.println("Sum:\t" + sum + "\n"); 

         switch (sum) 
         { 

           case 7: case 11: 
            c.println("All players wins."); 
            bank=(bet*2)+bank; 
            bank2=(bet2*2)+bank2; 
            c.println("Your Win has been added to your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break; 

           case 2: case 3: case 12: 
            c.println("All players lose."); 
            bank=bank-bet; 
            bank2=bank2-bet2; 
            c.println("Your Loss has been deducted from your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break; 

           case 4: case 5: case 6: case 8: case 9: case 10: 
            c.println("All Bets Stays and your available balances have not changed"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break;  

         } 
         } 
         break; 
        }      
           break; 
         } 

        }  
        break; 
       } 
       else if (input == 'P' || input == 'p') 
       { 
        c.clear(); 
        while(true) 
        { 

         Random randomNumbers = new Random(); 

         Scanner keyboard = new Scanner(System.in); 
         c.println ("would you like to play 1 player or 2 player"); 
         game=c.readInt(); 
         c.clear(); 

         if(game==1) 
         { 
         //PLAYER 1 
         c.println("Please enter your name"); 
         player=c.readString(); 
         c.clear(); 
         c.println("Please enter how much you would like to gamble with today?"); 
         bank=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + bank); 
         c.println("How much would you like to Bet?"); 
         bet=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
         c.println("Bet:" + bet); 
         c.println("Available:" + (bank));      

         c.println("First roll.\n"); 
         sum = roleDice(randomNumbers); 
         c.println("Sum:\t" + sum + "\n"); 

         switch (sum) 
         { 

           case 7: case 11: 
            c.println(player + " " + "wins."); 
            bank=(bet*2)+bank; 
            c.println("Your Win has been added to your available balance"); 
            c.setCursor(25,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break; 

           case 2: case 3: case 12: 
            c.println(player + " " + "loses."); 
            c.println("Your Loss has been deducted from your available balance"); 
            bank=bank-bet; 
            c.setCursor(25,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break; 

           case 4: case 5: case 6: case 8: case 9: case 10: 
            c.println(player + " " + "Your Bet Stays and your available balance has not changed"); 
            c.setCursor(25,4); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
            break;        
         }  
         } 
         else 
         { 
           //PLAYER 1 and PLAYER 2 
         c.println("Player 1 enter your name"); 
         player=c.readString(); 
         c.clear(); 
         c.println("Player 2 enter your name"); 
         player2=c.readString(); 
         c.clear(); 
         c.println("Player 1 how much you would like to gamble with today ?"); 
         bank=c.readInt(); 
         c.clear(); 
         c.println("Player 2 how much you would like to gamble with today ?"); 
         bank2=c.readInt(); 
         c.clear(); 
         c.println("\n"); 
         c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + bank); 
         c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + bank2); 
         c.println("Player 1 how much would you like to Bet ?"); 
         bet=c.readInt(); 
         c.println("Player 2 how much would you like to Bet ?"); 
         bet2=c.readInt(); 
         c.clear(); 
         c.println("\t\t\t" + "Player:" + player + "\t" + "Available:" + (bank)); 
         c.println("Bet:" + bet); 
         c.println("Available:" + (bank)); 
         c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
         c.println("Bet:" + bet2); 
         c.println("Available:" + (bank2)); 
         c.clear(); 
         c.println("First roll.\n"); 
         sum = roleDice(randomNumbers); 
         c.println("Sum:\t" + sum + "\n"); 

         switch (sum) 
         { 

           case 7: case 11: 
            c.println("All players wins."); 
            bank=(bet*2)+bank; 
            bank2=(bet2*2)+bank2; 
            c.println("Your Win has been added to your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\n"); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break; 

           case 2: case 3: case 12: 
            c.println("All players lose."); 
            bank=bank-bet; 
            bank2=bank2-bet2; 
            c.println("Your Loss has been deducted from your available balance"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break; 

           case 4: case 5: case 6: case 8: case 9: case 10: 
            c.println("All Bets Stays and your available balances have not changed"); 
            c.println ("New Balances shown at the bottom of the Screen"); 
            c.setCursor(21,1); 
            c.println("\t\t\t" + "Player1:" + player + "\t" + "Available:" + (bank)); 
            c.setCursor(22,1); 
            c.println("\t\t\t" + "Player2:" + player2 + "\t" + "Available:" + (bank2)); 
            break;  

         } 
         } 
         break; 
        } 
        break; 
       } 

       else if(input == 'Q' || input == 'q') 
       { 
        c.close(); 
        break; 
       } 
      } 

    } 
    // Sub Methods 

    // Random Number Generater 
    public static int roleDice(Random randomNumbers) 
    { 
      int dice1, dice2; 

      dice1 = 1+randomNumbers.nextInt(5); 
      dice2 = 1+randomNumbers.nextInt(5); 

      c.println("Dice 1:\t" + ++dice1); 
      c.println("Dice 2:\t" + ++dice2); 

      return dice1 + dice2; 

    } 

    // Menu Slector 
    public static char menu() 
    { 
      char letter; 
      c.clear(); 
      c.println("\t\t" + "  " + "*-----------------------------*"); 
      c.println ("\t\t" + " " + "**********" + "Game Slection Menu" +"***********"); 
      c.println("\t\t" + "  " +"*-----------------------------*"); 
      c.println ("\n\n"); 
      c.println("\t\t" +"M - For User Manual "); 
      c.println("\t\t" +"P - Play Game"); 
      c.println("\t\t" +"Q - To Quit"); 
      letter = c.readChar(); 
      c.readChar(); 

      return letter; 
    } 

    // Return Menu 
    public static char returnMenu() 
    { 
      char letter2; 
      c.clear(); 
      c.println ("\t\t\t" + "*******" + "User Manual:" + "*******"); 
      c.println ("\n"); 
      c.println("  **********************************************************************"); 
      c.println("  *                 *"); 
      c.println ("\t"+ "* This game is simple to play.          *"); 
      c.println ("\t"+ "* 2 Dices will be rolled and the numbers will be added together  *"); 
      c.println ("\t"+ "* If the sum of numbers rolled is equal to 7 or 11 its a Win   *"); 
      c.println ("\t"+ "* If the sum of numbers rolled is equal to 2,3 or 12 its a Loss  *"); 
      c.println ("\t"+ "* If the sum of numbers rolled is equal to 4,5,6,8,9,10 Bet remains*"); 
      c.println("  *                 *"); 
      c.println("  **********************************************************************"); 

      c.println("\t\t" +"P - To Play Game"); 
      c.println("\t\t" +"Q - To Quit"); 
      letter2 = c.readChar(); 
      return letter2; 
    } 


} 
+1

Не помещайте вещи как C# и Java ... они действительно разные. –

+1

Правильно укажите свои переменные вместо добавления комментариев. Так, а не 'int point; // Dices Rolled' использует 'int diceRolled'. (Также множественное число костей - «кости». Единственное число - «смерть»). –

ответ

0

Я бы сказал, вместо того, чтобы код, встроенный в основной, имел другой метод, в конце этого метода вы спрашиваете пользователя, хотят ли они снова играть, а затем да, тогда метод вызывает себя снова рекурсивно, если не программа завершается, так что вы затем вызвать его в основной, например

public static void play() 
    { 
     //place code here 

    S.o.p("play again?"); 
    //if yes call itself to startover 
    play(); 
    //if no, program terminates 
    } 

Тогда в основной у вас есть только вызов метода

public static void main(String...args) 
    { 
     play(); 
    } 

это мое предложение.

Edit: чтобы избежать потока stackover я обеспечиваю альтернативное

public static void play() 
    { 
     //place code here 
    } 

    public boolean playAgain(int choice) 
    { 
     if(!choice==1) 
     return false; 

    Return true; 
    } 

    public staic void main(String...args) 
    { 
    int repeat =0; 
     do 
     { 
     play(); 
     S.o.p("play again?\n enter 1 for yes,0 for no"); 
     //assign repeat the number choice 
     }while(playAgain(repeat)); 
    } 

Примечания: код предполагает правильный ввод от пользователя.

+0

С этим предложением, если пользователь продолжает играть достаточно часто, вы получите переполнение стека ... – beny23

+0

Да, может быть, но часто должно быть около тысячи раз, в качестве альтернативы, чтобы избежать того, чтобы он мог использовать цикл while в основном: – Sello