Skip to content

Commit 14ff8bb

Browse files
authored
Merge pull request #5 from kurehajime/refactoring
change chan
2 parents 8c4a7c4 + c1302d6 commit 14ff8bb

File tree

1 file changed

+26
-28
lines changed

1 file changed

+26
-28
lines changed

pong/pong.go

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
)
1111

1212
var (
13-
flush = make(chan int)
1413
meY = 12
1514
enemyY = 12
1615
ball = []int{40, 12}
@@ -60,29 +59,17 @@ func draw() {
6059
drawLine(meX, meY+i, fmt.Sprintf("||"))
6160
drawLine(enemyX, enemyY+i, fmt.Sprintf("||"))
6261
}
63-
flush <- 1
62+
termbox.Flush()
6463
}
6564

66-
func termSync() {
67-
for {
68-
flg := <-flush
69-
if flg == -1 {
70-
break
71-
}
72-
termbox.Flush()
73-
}
74-
}
75-
76-
func keyEvent() {
77-
draw()
65+
func keyEvent(c chan bool) {
7866
for {
7967
switch ev := termbox.PollEvent(); ev.Type {
8068
case termbox.EventKey:
8169
switch ev.Key {
8270
case termbox.KeyEsc, termbox.KeyCtrlC:
8371
clear = true
84-
draw()
85-
flush <- -1
72+
c <- false
8673
return
8774
case termbox.KeyArrowUp:
8875
if meY > wallTop+1 {
@@ -95,25 +82,25 @@ func keyEvent() {
9582

9683
default:
9784
}
98-
draw()
85+
c <- true
9986
default:
10087
}
10188
hitTest()
10289
}
10390
}
10491

105-
func moveBall() {
92+
func moveBall(c chan bool) {
10693
for {
10794

10895
ball[0] += vector[0]
10996
ball[1] += vector[1]
11097
hitTest()
111-
draw()
98+
c <- true
11299

113100
ball[0] += vector[0]
114101
hitTest()
115102
recMove()
116-
draw()
103+
c <- true
117104

118105
if ball[1] <= wallTop+1 || ball[1] >= wallBottom-1 {
119106
vector[1] *= -1
@@ -128,18 +115,18 @@ func moveBall() {
128115
score[0]++
129116
}
130117
initGame()
131-
draw()
118+
c <- true
132119
time.Sleep(time.Duration(500) * time.Millisecond)
133120
}
134-
121+
c <- true
135122
time.Sleep(time.Duration(100-level*5) * time.Millisecond)
136123
}
137124
}
138125
func recMove() {
139126
shadow = append(shadow, []int{ball[0], ball[1]})
140127
shadow = shadow[1:]
141128
}
142-
func moveEnemy() {
129+
func moveEnemy(c chan bool) {
143130
vec := 0
144131
for {
145132

@@ -152,7 +139,7 @@ func moveEnemy() {
152139
enemyY++
153140
}
154141
hitTest()
155-
draw()
142+
c <- true
156143

157144
switch true {
158145
case ball[0] < 30:
@@ -204,10 +191,21 @@ func main() {
204191
panic(err)
205192
}
206193

207-
go moveBall()
208-
go moveEnemy()
209-
go termSync()
194+
signal := make(chan bool)
195+
196+
go moveBall(signal)
197+
go moveEnemy(signal)
198+
go keyEvent(signal)
199+
200+
for {
201+
s := <-signal
202+
draw()
203+
if s == false {
204+
close(signal)
205+
break
206+
}
207+
}
208+
210209
defer termbox.Close()
211210

212-
keyEvent()
213211
}

0 commit comments

Comments
 (0)