Dice roll game домашнее задание - PullRequest
0 голосов
/ 06 мая 2018

Я просто пытаюсь выяснить это домашнее задание и могу использовать некоторую помощь. НЕ ИЩУ ОТВЕТОВ, просто лучшее понимание. Я очень новичок в кодировании, используя jGRASP Java. Учитель сказал нам создать эту игру, которая генерирует вывод, похожий на этот.

Раунд 1:

• Игрок A бросает: 1,2, наибольшее число 21 • Игрок Б бросает: 2,1, наибольшее число 21 • Результат: ничья

• Раунд 2: • Игрок А бросает: 2,5, наибольшее число - 52 • Игрок Б бросает: 6,8 старшее число 86 • Результат: игрок B выигрывает

• Раунд 3: • Игрок А бросает: 1,9, наибольшее число - 91 • Игрок Б бросает: 9,9, наибольшее число - 99 • Результат: игрок B выигрывает

• Окончательный результат: игрок B побеждает !!!

Должен ли я объявлять числа как строки, чтобы объединить их? и я использую, если еще заявления? В частности, я запутался в том, как расположить два числа, если одно больше другого, поэтому большее число будет помещено впереди.

Все, что угодно, спасибо, ребята.

Хорошего дня!

import java.util.Scanner;
import java.util.Random;

public class beatThat
{
   public static void main(String[] args)
   {
      Random r1 = new Random();
      Random r2 = new Random();
      Random r3 = new Random();
      Random r4 = new Random();

      int die1 = r1.nextInt(6) + 1;
      int die2 = r2.nextInt(6) + 1;
      int die3 = r3.nextInt(6) + 1;
      int die4 = r4.nextInt(6) + 1;

      System.out.println("ROUND 1");
      System.out.println("Player A rolls: " + die1 + " and " + die2 +".");
      System.out.println("Player B rolls: " + die3 + " and " + die4 +".");

      if(die1 >= die2)
      {
         System.out.println("Player A's highest number is: " + die1 + die2);
      }
      else if(die2 >= die1)
      {
         System.out.println("Player A's highest number is: " + die2 + die1);
      }
      if(die3 >= die4)
      {
         System.out.println("Player B's highest number is: " + die3 + die4);
      }
      else if(die4 >= die3)
      {
         System.out.println("Player B's highest number is: " + die4 + die3);
      }

    }
}

1 Ответ

0 голосов
/ 07 мая 2018

Немного упростил ваш код.

import java.util.Random;

public class Main {

public static void main(String[] args) {

    Random r1 = new Random();
    Random r2 = new Random();
    Random r3 = new Random();
    Random r4 = new Random();

    int die1 = r1.nextInt(6) + 1;
    int die2 = r2.nextInt(6) + 1;
    int die3 = r3.nextInt(6) + 1;
    int die4 = r4.nextInt(6) + 1;

    System.out.println("ROUND 1");
    System.out.println("Player A rolls: " + die1 + " and " + die2 +".");
    System.out.println("Player B rolls: " + die3 + " and " + die4 +".");

    Integer aMax = Integer.max(die1*10 + die2, die2*10 + die1);
    System.out.println("Player A's highest number is: " + aMax);

    Integer bMax = Integer.max(die3*10 + die4, die4*10 + die3);
    System.out.println("Player B's highest number is: " + bMax);

    System.out.println("Result: " +
            (!aMax.equals(bMax) ?
                aMax > bMax ? "Player A wins!" : "Player B wins!"
                :
                "Draw!")
    );
}
}

Все, что я сделал, это просто заменил это нехорошее выражение if / else на простое построение и сравнение этих двух чисел. В этом случае из двух рулонов я думаю, что это было бы просто замечательно. Если вы рассмотрите больше, возможно, вам следует попробовать перестановку строк и получить максимальное значение массива значений. Попробуйте это .

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

Этот пример сделает его чистым:

System.out.println(1 + 2 + "text"); //"3text"
System.out.println(1 + "text" + 2); //"1text3"
System.out.println("text" + 1 + 2); //"text12"

Надеюсь, это поможет вам. Приветствия.

...