From 2097dd5808bed181e4bf39ad48832526c5963350 Mon Sep 17 00:00:00 2001 From: Tristan Goossens Date: Thu, 10 Oct 2019 14:03:57 +0200 Subject: [PATCH] added new game.go --- game/game.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ run.go | 29 +--------------------- 2 files changed, 69 insertions(+), 28 deletions(-) create mode 100644 game/game.go diff --git a/game/game.go b/game/game.go new file mode 100644 index 0000000..701b994 --- /dev/null +++ b/game/game.go @@ -0,0 +1,68 @@ +package trisnake + +import ( + tl "github.com/JoelOtter/termloop" + // s "github.com/tristangoossens/snake-go/game" +) + +var Snakegame *tl.Game +var arenawidth int = 70 +var arenaheight int = 25 +var arena *Arena +var score int + +func StartGame() { + Snakegame = tl.NewGame() + + ts := NewTitleScreen() + ts.AddEntity(ts.TitleText) + Snakegame.Screen().SetLevel(ts) + Snakegame.Screen().SetFps(10) + Snakegame.Start() +} + +func NewTitleScreen() *Titlescreen { + ts := new(Titlescreen) + ts.Level = tl.NewBaseLevel(tl.Cell{ + Bg: tl.ColorBlack, + }) + ts.TitleText = tl.NewText(10, 5, "Press ENTER to start!", tl.ColorWhite, tl.ColorBlack) + return ts +} + +func NewSidepanel() (*tl.Rectangle, *tl.Text) { + sidepanel := tl.NewRectangle(arenawidth+1, 0, 30, arenaheight, tl.ColorWhite) + scoretxt := tl.NewText(arenawidth+2, 1, "Score: 0", tl.ColorBlack, tl.ColorWhite) + return sidepanel, scoretxt +} + +func Gameover() { + gos := new(Gameoverscreen) + gos.Level = tl.NewBaseLevel(tl.Cell{ + Bg: tl.ColorBlack, + }) + gos.Gameovertext = tl.NewText(10, 5, "Gameover!", tl.ColorBlack, tl.ColorRed) + gos.AddEntity(gos.Gameovertext) + + Snakegame.Screen().SetLevel(gos) +} + +func (ts *Titlescreen) Tick(event tl.Event) { + if event.Type == tl.EventKey && event.Key == tl.KeyEnter { + + level := tl.NewBaseLevel(tl.Cell{ + Bg: tl.ColorBlack, + }) + + snake := NewSnake() + arena := NewArena(arenawidth, arenaheight) + sidepanel, scoretxt := NewSidepanel() + + level.AddEntity(sidepanel) + level.AddEntity(scoretxt) + level.AddEntity(snake) + level.AddEntity(arena) + + Snakegame.Screen().SetLevel(level) + } +} diff --git a/run.go b/run.go index 3f57ed1..401793d 100644 --- a/run.go +++ b/run.go @@ -1,36 +1,9 @@ package main import ( - tl "github.com/JoelOtter/termloop" s "github.com/tristangoossens/snake-go/game" ) -var snakegame *tl.Game -var arenawidth int = 70 -var arenaheight int = 25 -var score int - func main() { - level := tl.NewBaseLevel(tl.Cell{ - Bg: tl.ColorBlack, - }) - - snake := s.NewSnake() - arena := s.NewArena(arenawidth, arenaheight) - sidepanel, titletext := NewSidepanel() - - level.AddEntity(sidepanel) - level.AddEntity(titletext) - level.AddEntity(snake) - level.AddEntity(arena) - - snakegame.Screen().SetLevel(level) - snakegame.Screen().SetFps(10) - snakegame.Start() -} - -func NewSidepanel() (*tl.Rectangle, *tl.Text) { - sidepanel := tl.NewRectangle(arenawidth+1, 0, 30, arenaheight, tl.ColorWhite) - scoretxt := tl.NewText(arenawidth+2, 1, "Score: 0", tl.ColorBlack, tl.ColorWhite) - return sidepanel, scoretxt + s.StartGame() }