|
| 1 | +package trisnake |
| 2 | + |
| 3 | +import ( |
| 4 | + tl "github.com/JoelOtter/termloop" |
| 5 | + // s "github.com/tristangoossens/snake-go/game" |
| 6 | +) |
| 7 | + |
| 8 | +var Snakegame *tl.Game |
| 9 | +var arenawidth int = 70 |
| 10 | +var arenaheight int = 25 |
| 11 | +var arena *Arena |
| 12 | +var score int |
| 13 | + |
| 14 | +func StartGame() { |
| 15 | + Snakegame = tl.NewGame() |
| 16 | + |
| 17 | + ts := NewTitleScreen() |
| 18 | + ts.AddEntity(ts.TitleText) |
| 19 | + Snakegame.Screen().SetLevel(ts) |
| 20 | + Snakegame.Screen().SetFps(10) |
| 21 | + Snakegame.Start() |
| 22 | +} |
| 23 | + |
| 24 | +func NewTitleScreen() *Titlescreen { |
| 25 | + ts := new(Titlescreen) |
| 26 | + ts.Level = tl.NewBaseLevel(tl.Cell{ |
| 27 | + Bg: tl.ColorBlack, |
| 28 | + }) |
| 29 | + ts.TitleText = tl.NewText(10, 5, "Press ENTER to start!", tl.ColorWhite, tl.ColorBlack) |
| 30 | + return ts |
| 31 | +} |
| 32 | + |
| 33 | +func NewSidepanel() (*tl.Rectangle, *tl.Text) { |
| 34 | + sidepanel := tl.NewRectangle(arenawidth+1, 0, 30, arenaheight, tl.ColorWhite) |
| 35 | + scoretxt := tl.NewText(arenawidth+2, 1, "Score: 0", tl.ColorBlack, tl.ColorWhite) |
| 36 | + return sidepanel, scoretxt |
| 37 | +} |
| 38 | + |
| 39 | +func Gameover() { |
| 40 | + gos := new(Gameoverscreen) |
| 41 | + gos.Level = tl.NewBaseLevel(tl.Cell{ |
| 42 | + Bg: tl.ColorBlack, |
| 43 | + }) |
| 44 | + gos.Gameovertext = tl.NewText(10, 5, "Gameover!", tl.ColorBlack, tl.ColorRed) |
| 45 | + gos.AddEntity(gos.Gameovertext) |
| 46 | + |
| 47 | + Snakegame.Screen().SetLevel(gos) |
| 48 | +} |
| 49 | + |
| 50 | +func (ts *Titlescreen) Tick(event tl.Event) { |
| 51 | + if event.Type == tl.EventKey && event.Key == tl.KeyEnter { |
| 52 | + |
| 53 | + level := tl.NewBaseLevel(tl.Cell{ |
| 54 | + Bg: tl.ColorBlack, |
| 55 | + }) |
| 56 | + |
| 57 | + snake := NewSnake() |
| 58 | + arena := NewArena(arenawidth, arenaheight) |
| 59 | + sidepanel, scoretxt := NewSidepanel() |
| 60 | + |
| 61 | + level.AddEntity(sidepanel) |
| 62 | + level.AddEntity(scoretxt) |
| 63 | + level.AddEntity(snake) |
| 64 | + level.AddEntity(arena) |
| 65 | + |
| 66 | + Snakegame.Screen().SetLevel(level) |
| 67 | + } |
| 68 | +} |
0 commit comments