Skip to content

Commit 4f18daf

Browse files
committed
Revert "Merge pull request #5 from kurehajime/refactoring"
This reverts commit 14ff8bb, reversing changes made to 8c4a7c4.
1 parent 14ff8bb commit 4f18daf

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

pong/pong.go

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

1212
var (
13+
flush = make(chan int)
1314
meY = 12
1415
enemyY = 12
1516
ball = []int{40, 12}
@@ -59,17 +60,29 @@ func draw() {
5960
drawLine(meX, meY+i, fmt.Sprintf("||"))
6061
drawLine(enemyX, enemyY+i, fmt.Sprintf("||"))
6162
}
62-
termbox.Flush()
63+
flush <- 1
6364
}
6465

65-
func keyEvent(c chan bool) {
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()
6678
for {
6779
switch ev := termbox.PollEvent(); ev.Type {
6880
case termbox.EventKey:
6981
switch ev.Key {
7082
case termbox.KeyEsc, termbox.KeyCtrlC:
7183
clear = true
72-
c <- false
84+
draw()
85+
flush <- -1
7386
return
7487
case termbox.KeyArrowUp:
7588
if meY > wallTop+1 {
@@ -82,25 +95,25 @@ func keyEvent(c chan bool) {
8295

8396
default:
8497
}
85-
c <- true
98+
draw()
8699
default:
87100
}
88101
hitTest()
89102
}
90103
}
91104

92-
func moveBall(c chan bool) {
105+
func moveBall() {
93106
for {
94107

95108
ball[0] += vector[0]
96109
ball[1] += vector[1]
97110
hitTest()
98-
c <- true
111+
draw()
99112

100113
ball[0] += vector[0]
101114
hitTest()
102115
recMove()
103-
c <- true
116+
draw()
104117

105118
if ball[1] <= wallTop+1 || ball[1] >= wallBottom-1 {
106119
vector[1] *= -1
@@ -115,18 +128,18 @@ func moveBall(c chan bool) {
115128
score[0]++
116129
}
117130
initGame()
118-
c <- true
131+
draw()
119132
time.Sleep(time.Duration(500) * time.Millisecond)
120133
}
121-
c <- true
134+
122135
time.Sleep(time.Duration(100-level*5) * time.Millisecond)
123136
}
124137
}
125138
func recMove() {
126139
shadow = append(shadow, []int{ball[0], ball[1]})
127140
shadow = shadow[1:]
128141
}
129-
func moveEnemy(c chan bool) {
142+
func moveEnemy() {
130143
vec := 0
131144
for {
132145

@@ -139,7 +152,7 @@ func moveEnemy(c chan bool) {
139152
enemyY++
140153
}
141154
hitTest()
142-
c <- true
155+
draw()
143156

144157
switch true {
145158
case ball[0] < 30:
@@ -191,21 +204,10 @@ func main() {
191204
panic(err)
192205
}
193206

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-
207+
go moveBall()
208+
go moveEnemy()
209+
go termSync()
209210
defer termbox.Close()
210211

212+
keyEvent()
211213
}

0 commit comments

Comments
 (0)