-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.go
64 lines (57 loc) · 1015 Bytes
/
main.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
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"github.com/firefly-zero/firefly-go/firefly"
)
var frame = 0
var font firefly.Font
func init() {
firefly.Boot = boot
firefly.Update = update
firefly.Render = render
firefly.Cheat = cheat
}
func boot() {
font = firefly.LoadFile("font", nil).Font()
apple = NewApple()
peers := firefly.GetPeers()
snakes = make([]*Snake, peers.Len())
for i, peer := range peers.Slice() {
snakes[i] = NewSnake(peer)
}
score = NewScore()
}
func update() {
frame += 1
for _, snake := range snakes {
snake.Update(frame, &apple)
snake.TryEat(&apple, &score)
score.Update(snake)
}
}
func render() {
firefly.ClearScreen(firefly.ColorWhite)
apple.Render()
for _, snake := range snakes {
snake.Render(frame)
}
score.Render()
}
func cheat(c, v int) int {
switch c {
case 1:
apple.Move()
return 1
case 2:
for i := 0; i < int(v); i++ {
score.Inc()
}
return score.val
case 3:
for i := 0; i < int(v); i++ {
score.Dec()
}
return score.val
default:
return 0
}
}