2016-10-08 4 views
1

Я пытаюсь сделать простую программу в java, используя Scanner, которая позволит пользователю снимать крэпс (играть в кости).Looping «If Else Statement» java

1. Этот код запрашивает у пользователя, сколько денег у них есть.

  1. Код попросит пользователя ввести ставку.

  2. Используя генератор случайных чисел, он информирует пользователя о том, что они сканировали, и сообщит пользователю, сколько денег они выиграли/потеряли.

Я был в состоянии успешно сказать компьютеру, чтобы сообщить пользователю, когда они выиграли или проиграли, когда они катятся 2,3,7,11 или 12.

Я не знаю, как чтобы сообщить компьютеру разрешить пользователю продолжать скатывать кости, когда другие случайные значения, такие как 4,5,6,8,9 и 10, покатаются, пожалуйста, помогите. Вот мой код:

System.out.println("How much is in your purse?: "); 
purse = input.nextInt(); 

System.out.println("make a bet: "); 
bet = input.nextInt(); 

int pNumber = rand.nextInt(12) + 1; 

if (pNumber == 2 || pNumber == 3 || pNumber == 12) 
{ 
    purse = purse - bet; 
    System.out.println("you rolled a " + pNumber); 
    System.out.println("you lost $" + bet); 
} 
else if (pNumber == 7 || pNumber == 11) 
{ 
    purse = purse + bet; 
    System.out.println("you rolled a " + pNumber); 
    System.out.println("you won $" + bet); 
} 
else 
{ 
    System.out.println("you rolled a " + pNumber + ",keep rolling"); 
} 
+0

Игра заканчивается, если пользователь выигрывает или проигрывает? – paisanco

+0

Нет, игра продолжается до тех пор, пока у пользователя не закончится деньги (кошелек == 0) –

ответ

1

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

Что-то вроде этого. Начните с начальной суммы в кошельке, затем запустите игру.

Если пользователь выигрывает или проигрывает, они делают новую ставку и снова свертывают.

Если пользователь ни выигрывает, ни проигрывает, они просто снова рулон с текущей ставкой.

System.out.println("How much is in your purse?: "); 


    purse = input.nextInt(); 
    boolean newBet = true; 

    while(purse > 0) 
    { 
    if(newBet) 
    { 
     System.out.println("make a bet: "); 
     bet = input.nextInt(); 
    } 

    //roll the dice, new bet or not 
    int pNumber = rand.nextInt(12) + 1; 

    if (pNumber == 2 || pNumber == 3 || pNumber == 12) 
    { 
      purse = purse - bet; 
      System.out.println("you rolled a " + pNumber); 
      System.out.println("you lost $" + bet); 
      newBet =true; //make a new bet if you won 
    } 
    else if (pNumber == 7 || pNumber == 11) 
    { 
      purse = purse + bet; 
      System.out.println("you rolled a " + pNumber); 
      System.out.println("you won $" + bet); 
      newBet=true; //make a new bet if you lost 
    } 
    else 
    { 
     System.out.println("you rolled a " + pNumber + ",keep rolling"); 
     newBet=false; // make no new bet, neither won nor lost 

    } 
    } //end while 


    System.out.println("Game over !") 

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

+0

Это не то, о чем просил ОП. OP хочет знать, как позволить пользователю перезапустить свои кости, если они откатывают 4,5,6,8,9 или 10 – AleksandrH

+0

OP в комментариях, которые они хотели, чтобы игра продолжалась, даже если пользователь выиграл деньги (свернул 7 или 11) или потерянные деньги (2, 3 или 12), или рулон не повлиял на деньги (4,5,6,8,9,10). – paisanco

+0

OK Я вижу, что вы указываете, редактируете. – paisanco

-2
boolean keep_rolling = true; 

While(keep_rolling== true) 
{ 
System.out.println("How much is in your  purse?: "); 
     purse = input.nextInt(); 
     if(purse==0){ 
System.out.println("you need more money to continue "); 

}else{ 

     System.out.println("make a bet: "); 
     bet = input.nextInt(); 



    int pNumber = rand.nextInt(12) + 1; 






     if (pNumber == 2 || pNumber == 3 || pNumber == 12) 
     { 
      purse = purse - bet; 
      System.out.println("you rolled a " + pNumber); 
      System.out.println("you lost $" + bet); 
keep_rolling= false; 
     } 
        else if (pNumber == 7 || pNumber == 11) 
        { 
         purse = purse + bet; 
         System.out.println("you rolled a " + pNumber); 
         System.out.println("you won $" + bet); 

     keep_rolling= false;    } 
         else 
         { 

System.out.println("you rolled a " +  pNumber + ",keep rolling"); 

             } 
}//end else of purse==o 
}//end while 
+0

Спасибо всем, в частности, спасибо Painsanco, который сделал именно то, что я хотел! –

+0

@KelOkekpe Вы должны принять ответ, который сработал для вас, это лучший способ поблагодарить! – Addis

0

Key, если вы хотите, чтобы катиться на конкретные номера ставить весь ваш код внутри цикла while или do-while.

0

Вот простой алгоритм в простых словах, которые могут помочь представить фактический код:


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

Если рулон пользователя не равен 4,5,6,8,9 или 10, что в соответствии с вашими пояснениями представляет собой проблематичные номера, приведите свои расчеты

В противном случае, если пользователь действительно бросил плохое число , сделайте рекурсивный ca ll к методу прокатки . Это создаст еще один случайный бросок и пройти проверки снова до тех пор, «приемлемый» рулет генерируется


Не уверен, если вы знаете о рекурсии еще, но в основном, это метод, называющая себя.