-
Notifications
You must be signed in to change notification settings - Fork 0
/
yutnori_pseudocode.txt
113 lines (95 loc) · 2.04 KB
/
yutnori_pseudocode.txt
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// 말은 어떻게?
class Marker{
public int index { get; set; } // 플레이어의 몇 번째 말?
public int position { get; set; } // 현재 위치가 어디에 있는가?
public bool isFinished { get; set; } // 말이 골인했는가?
public Marker(){
this.position = 0;
this.isFinished = false;
}
}
// 말이 움직이는 방식
void move(Marker marker, int amount){
// 현재 칸에 또다른 내 말이 있다면 그것도 같이 움직인다.
// 현재 모서리 칸에 있다면 예외적으로 움직인다. 그게 아니라면, 그냥 움직인다.
}
// 도개걸윷모, 백도, 새로운 백도에 대한 enum
enum Yuts {
DO=1, GAE, GEOL, YUT, MO, BACKDO, BACKDO_NEW
}
// 내 차례면, 윷 던진다. (이건 스레드 내부에?)
if(myTurn){
throwYut();
}
// 확률에 맞게 윷 리턴하는 함수
Yuts getYut(){
}
// 도 or 개 or 걸이 나왔을 때
void gotDoGaeGeol(int n){
// 저장된 것들에 무언가가 있을 경우, 나온 것 역시 저장하고 nextTurn() 한다.
if(there's no marker) placeNew(n);
else if(player chooses to place a new marker) place new and go for n;
else choose one and go for n;
nextTurn();
}
// 윷이 나왔을 때
void gotYut(){
save(YUT);
throwYut();
}
// 모가 나왔을 때
void gotMo(){
save(MO);
throwYut();
}
// 빽도가 나왔을 때
void gotBackDo(){
// 자신의 말이 말판에 하나도 없을 경우, 아무것도 안 한다.
if(no marker on board) do nothing;
else{
select one marker and move(-1);
}
}
// 새로운 빽도가 나왔을 때
void gotBackDoNew(){
}
// 윷 던지기
void throwYut() {
yut = getYut();
switch(yut){
case DO:
gotDoGaeGeol(1);
break;
case GAE:
gotDoGaeGeol(2);
break;
case GEOL:
gotDoGaeGeol(3);
break;
case YUT:
goYut();
break;
case MO:
gotMo();
break;
case BACKDO:
gotBackDo();
break;
case BACKDO_NEW:
gotBackDoNew();
break;
}
}
void nextTurn(){
if(there's something left in saved Yuts){
남아 있는 윷을 모두 사용
}
else{
서버에게 다음 차례로 가라고 요청 & 내 차례 끝
}
}
// 말 잡기
void catchMarker(){
이동 완료 후 해당 칸에 상대의 말이 있을 경우 상대의 말을 모두 다 잡고 한 번 더 던지기.
}
// 말판은 어떻게?