/
world.go
77 lines (68 loc) · 1.48 KB
/
world.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
65
66
67
68
69
70
71
72
73
74
75
76
77
package main
import (
tl "github.com/JoelOtter/termloop"
"time"
)
func world() {
game := tl.NewGame()
level := tl.NewBaseLevel(tl.Cell{
Bg: tl.ColorWhite,
Fg: tl.ColorWhite,
Ch: '_',
})
for i := -1000; i < 1000; i = i + 40 {
if i == 0 {
continue
}
for j := -1000; j < 1000; j = j + 40 {
level.AddEntity(tl.NewRectangle(i, j, 20, 10, tl.ColorBlue))
}
}
player := Player{
entity: tl.NewEntity(1, 1, 1, 1),
level: level,
}
player.entity.SetCell(0, 0, &tl.Cell{Fg: tl.ColorBlack, Ch: '옷'})
level.AddEntity(&player)
game.Screen().SetLevel(level)
go func() {
for {
player.Tick(tl.Event{})
time.Sleep(200 * time.Millisecond)
}
}()
game.Start()
}
type Player struct {
entity *tl.Entity
level *tl.BaseLevel
}
func (player *Player) Draw(screen *tl.Screen) {
screenWidth, screenHeight := screen.Size()
x, y := player.entity.Position()
player.level.SetOffset(screenWidth/2-x, screenHeight/2-y)
player.entity.Draw(screen)
}
func (player *Player) Tick(event tl.Event) {
x, y := player.entity.Position()
delta := BODY.left.delta()
if delta > 0 {
x--
y++
} else if delta < 0 {
y--
x--
}
delta = BODY.right.delta()
if delta > 0 {
x++
y++
} else if delta < 0 {
x++
y--
}
player.entity.SetPosition(x, y)
}
func (player *Player) Size() (int, int) { return player.entity.Size() }
func (player *Player) Position() (int, int) { return player.entity.Position() }
func (player *Player) Collide(collision tl.Physical) {}