-
Notifications
You must be signed in to change notification settings - Fork 0
/
game.go
86 lines (72 loc) · 1.48 KB
/
game.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
78
79
80
81
82
83
84
85
86
package main
import (
"os"
"github.com/hajimehoshi/ebiten/v2"
)
type Game struct {
handler handler
pressedKey ebiten.Key
frameCount int
}
const size = 8
func NewGame() *Game {
initialMode := NewMenuMode()
// initialMode := NewImageTestMode()
return &Game{handler: initialMode}
}
func (g *Game) Update() error {
oldPressed := g.pressedKey
isNewtral := true
if ebiten.IsKeyPressed(ebiten.KeyLeft) {
g.pressedKey = ebiten.KeyLeft
isNewtral = false
}
if ebiten.IsKeyPressed(ebiten.KeyRight) {
g.pressedKey = ebiten.KeyRight
isNewtral = false
}
if ebiten.IsKeyPressed(ebiten.KeyUp) {
g.pressedKey = ebiten.KeyUp
isNewtral = false
}
if ebiten.IsKeyPressed(ebiten.KeyDown) {
g.pressedKey = ebiten.KeyDown
isNewtral = false
}
if ebiten.IsKeyPressed(ebiten.KeyEnter) {
g.pressedKey = ebiten.KeyEnter
isNewtral = false
}
if isNewtral {
g.pressedKey = -1
}
if oldPressed != g.pressedKey {
switch g.pressedKey {
case ebiten.KeyLeft:
g.handler.Left(g)
case ebiten.KeyRight:
g.handler.Right(g)
case ebiten.KeyUp:
g.handler.Up(g)
case ebiten.KeyDown:
g.handler.Down(g)
case ebiten.KeyEnter:
g.handler.Enter(g)
}
}
g.IncrementCount()
return nil
}
func (g *Game) Draw(screen *ebiten.Image) {
g.handler.Draw(screen, g)
}
func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
return 320, 240
}
func (g *Game) IncrementCount() {
g.frameCount += 1
g.frameCount %= 100000
}
func (g *Game) Quit() {
os.Exit(0)
}