BG Development


  Reply to this topicStart new topicStart Poll

> Някой да знае как се хвърлят зарове?
jordanElj
Публикувано на: 06-10-2022, 10:26
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Tрябва да създадете програма, която симулира играта със зарове 12

Играта се състои от три зара и целта е да добавите до 12 във всеки кръг (на произволен брой зарове). Всеки зар може да се хвърля само веднъж на рунд.

Във всеки кръг играчът трябва да може да избира между:
1 - матрица за хвърляне 1
2 - матрица за хвърляне 2
3 - матрица за хвърляне 3
q - отмени играта

Програмата трябва произволно да избере стойност за избрания зар и след това да изчисли общия резултат. Програмата трябва също така да представя броя на спечелените и броя на загубените рундове. Програмата трябва да продължи, докато потребителят избере да отмени играта. Дефиницията за печалба е, когато сумата на заровете е 12 (независимо от броя на заровете), а дефиницията за загуба е сума, надвишаваща 12, след като и трите зара са хвърлени. Ако сборът след три хвърляния е по-малък от 12, няма нито победа, нито загуба, но отивате директно в следващия кръг.
-------------------------------------------------- ----------------------------------
Добре дошли в играта 12. Трябва да хвърлите 1-3 зара и да се опитате да получите общо 12...
Въведете кой зар искате да хвърлите [1,2,3] (завършете с q): 1
6 0 0 сбор: 6 #победа: 0 #загуба: 0
Въведете кой зар искате да хвърлите [1,2,3] (завършете с q): 2
6 1 0 общо: 7 #победа: 0 #загуба: 0
Въведете кой зар искате да ударите [1,2,3] (завършете с q): 3
6 1 2 общо: 9 #победа: 0 #загуба: 0


Следващ кръг!
Въведете кой зар искате да хвърлите [1,2,3] (завършете с q): 1
6 0 0 сбор: 6 #победа: 0 #загуба: 0
Въведете кой зар искате да хвърлите [1,2,3] (завършете с q): 2
6 3 0 общо: 9 #победа: 0 #загуба: 0
Въведете кой зар искате да ударите [1,2,3] (завършете с q): 3
6 3 3 общо: 12 #победа: 1 #загуба: 0
Следващ кръг!
Въведете кой зар искате да хвърлите [1,2,3] (завършва с q): q
Край на играта!

-------------------------------------------------- ----------------------------------

В тази задача трябва да проверите/управлявате въвеждането на потребителя и да дадете подходяща обратна връзка, ако възникне неправилно въвеждане. Програмата не трябва да се срива, независимо какво въвежда потребителят. В рунд можете да ударите всеки зар само веднъж. Използвайте константи за стойности, които не се променят.
PMEmail Poster
Top
jordanElj
Публикувано на: 06-10-2022, 11:21
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Това тука би трябвало да е началото на програмата!


QUOTE


int number1 = 0;
      int number2 = 0;
      int number3 = 0;
      int sum = 0;
   
        {
 
        number1 = (int) (Math.random() * 6) + 1 ;
      number2 = (int) (Math.random() * 6) + 1 ;
      number3 = (int) (Math.random() * 6) + 1 ;
        sum = number1 + number2 + number3 ;
     
      System.out.print( number1 + " " + number2  + " " + number3 );
     
 
     
        }
       
       
        System.out.println("\n" + "Sum is: " +  sum);


            ------------------------------------------------------------------------------------------

            1 5 3
            Sum is: 9


PMEmail Poster
Top
thrawn
Публикувано на: 07-10-2022, 08:59
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3521
Регистриран на: 17.01.17



Показвай целия код, при това се старай да е форматиран добре. Така шансът да се допусне грешка (логическа) намалява.

На въпросът ти "как се хвърля зар" явно няма смисъл да се отговаря (използва се рандом генератор който дава случайно число между 0 и 1). След това, това число трябва да го използваш за да получиш валидна стойност в диапазона който ти трябва (от 1 до 6 включително). Подходът е правилен (макар, че при него, 1 и 6 ще се падат по-рядко, но това е без значение в твоя случай), но в реализацията ти има грешка. Каква, предполагам ще откриеш сам.

От това което е дадено обаче се вижда, че е рано да се занимаваш с това. Задачата изисква да се реализира логика за реализиране на меню с избор от него. Първо реализирай тази част, пък после се занимавай с детайлите.

Това мнение е било редактирано от thrawn на 07-10-2022, 09:01
PMEmail Poster
Top
thrawn
Публикувано на: 07-10-2022, 10:34
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3521
Регистриран на: 17.01.17



Всъщност, и така си работи, моя грешка... icon_smile.gif
PMEmail Poster
Top
jordanElj
Публикувано на: 27-10-2022, 12:38
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Не мога да се справя с While loop който да задвижи играта.
Някой който може да помогне!?


PMEmail Poster
Top
jordanElj
Публикувано на: 27-10-2022, 12:40
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



QUOTE


import java.util.*;



public class Dice27_10 {
//private static final int case1 = 0;


public static void main(String[] args) {


  int sumOfDice = 0;
  int countWin = 0;
  int countLoss = 0;
  int diceOne = 0;
  int diceTwo = 0;
  int diceThree = 0;
 
  System.out.println("Welcome to the game 12. You have to roll 1-3 dice and try to get the total 12...");
 
  Scanner userInput = new Scanner(System.in);
 
 
 
 
  System.out.println("Enter which die you want to roll [1,2,3](finish with q)");
 
  int pickDice = userInput.nextInt();
 
 
  switch (pickDice) {
 
  case 1:
  diceOne = (int) (Math.random ()* 6);
      sumOfDice = diceOne + diceTwo + diceThree;
      System.out.println(diceOne + " " + diceTwo + " " + diceThree +" ");
      System.out.println("Sum is: " + sumOfDice + " " + " Win : " + countWin + " Loss: " +countLoss);
  if (sumOfDice == 12) {
   
  countWin++;
  }
 
  else if (sumOfDice < 12 ) {
    countLoss++;
    }


    else {
    System.out.println("Next round ");
 
}
    break;
 
    case 2:
  diceTwo = (int) (Math.random ()* 6);
    sumOfDice = diceOne + diceTwo + diceThree;
    System.out.println(diceOne + " " + diceTwo + " " + diceThree +" ");
    System.out.println("Sum is: " + sumOfDice + " " + " Win : " + countWin + " Loss: " + countLoss);
  if (sumOfDice < 12) {
 
  countWin++;
  }
 
  else if (sumOfDice < 12 ) {
  countLoss++;
 
  }

        else {
      System.out.println("Next round ");
 
        }
  break;
 
  case 3:
  diceTwo = (int) (Math.random ()* 6);
      sumOfDice = diceOne + diceTwo + diceThree;
      System.out.println(diceOne + " " + diceTwo + " " + diceThree +" ");
      System.out.println("Sum is: " + sumOfDice + " " + " Win : " + countWin + " Loss: " + countLoss);
  if (sumOfDice < 12) {
   
  countWin++;
  }
 
  else if (sumOfDice < 12 ) {
    countLoss++;
    }
 
  System.out.println("Next round ");
 
 

   
}

}
}
 
PMEmail Poster
Top
thrawn
Публикувано на: 28-10-2022, 12:52
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3521
Регистриран на: 17.01.17



Какво точно не можеш да направиш?

По условие, потребителя трябва да избере зар с число 1, 2 или 3 или да натисне q за изход. Наличието на това q в условието значи, че входът не е само числа, което значи, че nextInt() не върши работа. Трябва ти String за вход.

С други думи, въртиш цикъл докато не получиш една от 4-те възможности за вход.

След това проверяваш стойността. Ако е "q" излизаш от приложението. Ако е "1", "2" или "3" проверяваш дали съответния зар е хвърлен (гледаш съответната стойност diceOne, diceTwo или diceThree дали е различна от 0) и ако е караш потребителя да избере отново. Това го циклиш докато и 3-те зара не бъдат хвърлени.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0