공부/Java 복습

5DiceGame 자바

ChoiDooSic 2021. 9. 12. 22:20

랜덤으로 5개의 주사위를 굴린 다음에 주사위의 결과를 통해 다음을 구분하는 클래스를 만들어보세요
 
1. 풀하우스 (같은 눈이 2개 + 3개) (11666/22333/55252)
2. 스몰 스트레이트 (1234/2345/3456) 
3. 라지 스트레이트 (12345/23456) 
4. 4 다이스 (같은 숫자 4개) 
5. 5 다이스 (같은 숫자 5개) 

 

final static int MAX_DICE_NUM 과 DICE_SIZE는
다이스에 가장 큰 숫자가 6인것과 5개의 주사위를 굴리는것은 변하지 않기때문에 final로 선언하였다.

[생성자]
생성자에는 배열의 인덱스값과 랜덤 메서드를 선언해준다.

 

[roll()] 메서드
랜덤 숫자 5개를 dices배열에 넣어준다.

[printDice()] 메서드
roll() 메서드에서 랜덤으로 배열에 넣은 숫자들을 확인할 수 있다.

 

※핵심 기능들

[available()] 메서드
다이스의 값을 체크하는 메서드들을 체크하여 어떤 값(5 Dice, Full House 등...)을 가졌는지 체크하여 출력해준다.

[countDices()] 메서드
1~6까지의 랜덤 숫자가 주어진다
이때에 각 숫자가 나올때마다 그 숫자를 가진 배열에 ++를해서 해당 숫자가 몇번 나왔는지
체크하여준다 -1을하는 이유도 이 부분에 해당한다.
최대한 알기 쉽게 설명해보자면
dices에 2라는 숫자가 3개 들어있다고 해보자 이때에 dices[i]를해서 그 안의 값이 2가 나온다면
count의 2-1번 배열에 ++를해서 2가 나올때마다 숫자를 더해줘 몇번 나왔는지 체크해주는 것이다
여기서 -1을 해주는 이유는 배열의 인덱스는 0부터 시작하기 때문에 1번은 0번 인덱스에 2번은 1번 인덱스에
들어가야 하기 때문이다!

 

[checkNo1()] 메서드
풀 하우스를 체크해주는 메서드이다
이 메서드는 for Each문을 이용하여 counts배열에 들어 있는 값들을 꺼내어
2와 3이 들어있다면 풀 하우스가 되는것이다. (이 부분을 이해하기 위해서는 countDices() 부분을 이해하고 와야한다
배열에 같은 숫자가 들어있을때마다 해당 값의 인덱스에 ++ 해줘서 값을 더해뒀기 때문이다.)

 

[checkNo2()] 메서드
스몰스트레이트 를 체크해주는 메서드이다
스몰스트레이트에는 공통점이 있다 (1234/2345/3456)
3번과 4번이 어느 값이든 들어있다는 것이다.
일단 3번과 4번이 있는지 체크하여주고 그 이후에
1,2가 같이 포함되있거나 또는 2,5가 포함되있거나 또는 5,6이 포함 되어있는지

확인하여 true를 반환한다.

[checkNo3()] 메서드
라지 스트레이트 를 확인해주는 메서드이다
라지스트레이트에도 공통점이 있다(12345/23456) 2,3,4,5라는 숫자가 공통된다는 것이다
그렇기에 2,3,4,5가 포함되어 있는지 확인하여주고
그 이후에 1이 같이 포함되있거나 6이 포함되어있다면
확인하여 true를 반환한다.

[checkNo4()] 메서드
4 다이스 를 확인하여 주는 메서드이다.
4 다이스는 같은 숫자가 4개가 나오면 되기때문에
배열안에 4라는 값이 있다면 true를 반환하여준다.

[checkNo5()] 메서드
5다이스 를 확인하여 주는 메서드이다.
5다이스는 같은 숫자가 5개가 나오면 되기때문에
배열안에 5라는 값이 있다면 true를 반환하여준다.