본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA 4장 미니 프로젝트 주사위 게임

by prlkt5200 2022. 10. 5.
반응형

(이 문제는 https://aeunhi99.tistory.com/152의 글을 참고해서 작성했습니다.)

이 문제는 곰곰이 생각하면 풀 수 있는 문제였으나, 중간에 너무 지저분해져서 다시 다른 분 것을 참고해서, 거기에

해설을 달아보는 식으로 공부를 했습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package test;
 
public class Dice {
 
    // value는 주사위 면의 값을 의미하는 필드이다.
    private int value;
 
    public Dice() {
        value = 0;
        // 생성자로 value를 0으로 초기화 할 수 있다.
    }
 
    // 이것은 주사위를 다시 굴리기 위한 메소드이다.
    // 이 메소드로 value 값은 난수가 된다.
    public void roll() {
        value = ((int) (Math.random() * 6)) + 1;
    }
 
    // 매개 변수로 받은 value를 객체의 필드인 value에 저장하는 설정자이다
    public void setValue(int value) {
        this.value = value;
    }
 
    // 그런 value의 값을 리턴하는 접근자이다.
    public int getValue() {
        return value;
    }
 
    public static void main(String[] args) {
 
        // 주사위 두 개의 객체를 부른다.
        Dice d1 = new Dice();
        Dice d2 = new Dice();
 
        // 다시 주사위를 굴렸을 때, count 하기 위한 변수다.
        int count = 1;
        
        //처음에 setValue 값이 0이면 무의미하게 count가 낭비되기에 
        //생성자가 아닌 설정자 메소드를 활용해 초기값을 정하고 반복문을 돌린다.
        d1.setValue(((int) (Math.random() * 6)) + 1);
        d2.setValue(((int) (Math.random() * 6)) + 1);
 
        do {
            // 각 객체의 접근자를 호출하는 출력문이다.
            System.out.printf("주사위 1=%d 주사위 2=%d\n", d1.getValue(), d2.getValue());
 
            // 두 객체의 주사위면(value)의 합이 2가 되었을 때의 카운트가 몇인지를 알기 위한 if문이다.
            if (d1.getValue() + d2.getValue() == 2) {
                System.out.printf("(%d,%d)이 나오는데 걸린 회수=%d", d1.getValue(), d2.getValue(), count);
                break;
 
                // 합이 2가 안나오면 다시 주사위를 굴리기 위한 메소드이다
            } else {
                d1.roll();
                d2.roll();
                count++;
            }
 
        } while (true);
 
    }
 
}
 
 
cs

 

ps: 저작권 관련해서, 뒤늦게 확인했습니다.  저는 출처만 남기면 될 줄 알았는데. 만약 약간이라도변경 하게 되면, 변경 사실도 원저작자에게 공지해야 한다고 나와있었습니다. 

제가 이 같은 사실을 너무 늦게 파악하는 바람에, 그동안은 못했는데, 잘참고해서 다음부터는 이 같은 실수를 해서는 안되겠지요. 혹시라도 저작권 관련해서 문제 될 시 바로 삭제 조치를 취하겠습니다.)

 

 

반응형