Логические уникальные кости - PullRequest
0 голосов
/ 08 мая 2018

У меня есть класс игры в кости, который бросает случайные числа от 1 до 6. Я хочу создать другой класс, который реализует проверку всех чисел и прекращает прокатку, когда все уникальные числа свернуты один раз. Не уверен, как бы я использовал getFace и логический метод. Думая о каждом числе, начинающемся с false и заканчивающемся истиной, как только число появляется.

public class Die {

public final int MAX = 6; //max 6
private int faceValue; //current value showing on die

//constructor
public Die() {
   faceValue = 1;
   }

public int roll(){
  faceValue = (int)(Math.random()*MAX)+1;
  return faceValue;
  }

public void setFaceValue(int value){
  if(value> 0 && value <=MAX)
     faceValue=value;
  }

public int getFaceValue(){
  return faceValue;
  }

public String toString(){
  String result = Integer.toString(faceValue);
  return result;
  }
}

Ответы [ 2 ]

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

Логика: Создайте набор S. Продолжайте катиться и добавляйте результат к этому набору. Остановитесь, если размер набора равен 6. (Набор содержит только уникальные элементы.)

import java.util.HashSet;
import java.util.Set;

public class Play {

    public static void main(String[] args) {

        Die die = new Die();
        Set<Integer> set = new HashSet<>();
        int outcome = 0;

        //Keep rolling until set size is 6.
        while(set.size() != 6) {
            outcome = die.roll();
            set.add(outcome);
        }

        System.out.println(set);

    }

}

class Die {

    public final int MAX = 6; //max 6
    private int faceValue; //current value showing on die

    //constructor
    public Die() {
        faceValue = 1;
    }

    public int roll(){
        faceValue = (int)(Math.random()*MAX)+1;
        return faceValue;
    }

    public void setFaceValue(int value){
        if(value> 0 && value <=MAX)
            faceValue=value;
    }

    public int getFaceValue(){
        return faceValue;
    }

    public String toString(){
        String result = Integer.toString(faceValue);
        return result;
    }
}
0 голосов
/ 08 мая 2018
ArrayList<Integer> numList = new ArrayList<Integer>();
//Add 1-6
for(int i = 1;i < 7;i++){
    numList.Add(i);
}
Die dice = new Die();
While(numList.size() != 0){
   int rolled = dice.roll();
   ArrayList.remove(rolled);
}

Я предполагаю, что код выглядит примерно так. Немного не трогал Java.

...