-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoint.go
53 lines (46 loc) · 976 Bytes
/
point.go
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
package main
import "time"
//import "log"
//import "os"
import "math/rand"
func main() {
//l := log.New(os.Stderr, "",1)
f := NewField()
defer f.Close()
//f.Add(NewPoint(10,2,'g'))
s := NewSnake(f, f.w/2, f.h/2)
f.Add(s)
f.Add(NewWall(10, 10, 20, 10))
f.Add(NewWall(0, 0, f.w-1, 0))
f.Add(NewWall(0, f.h-1, f.w-1, f.h-1))
f.Add(NewWall(0, 0, 0, f.h-1))
f.Add(NewWall(f.w-1, 0, f.w-1, f.h-1))
for {
p := NewPoint(int(rand.Float64()*float64(f.w)), int(rand.Float64()*float64(f.h)), '*')
if f.Intersect(p.x, p.y) == nil {
f.Add(p)
break
}
}
var dir Direction = UP
go s.parseKeyboard(&dir)
END:
for i := 1; i <= 200; i++ {
r := s.Grow(dir)
f.Redraw()
switch r {
case "":
case "ate":
for {
p := NewPoint(int(rand.Float64()*float64(f.w)), int(rand.Float64()*float64(f.h)), '*')
if f.Intersect(p.x, p.y) == nil {
f.Add(p)
break
}
}
case "gameover":
break END
}
time.Sleep(300 * time.Millisecond)
}
}