polish some things
This commit is contained in:
+28
-12
@@ -9,8 +9,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
WINDOW_WIDTH int = 1200
|
||||
WINDOW_HEIGHT int = 800
|
||||
WindowWidth int = 500
|
||||
WindowHeight int = 500
|
||||
)
|
||||
|
||||
type GameState int
|
||||
@@ -19,6 +19,7 @@ const (
|
||||
MainMenu GameState = iota
|
||||
Playing
|
||||
Dead
|
||||
Won
|
||||
)
|
||||
|
||||
type Game struct {
|
||||
@@ -32,7 +33,7 @@ type Game struct {
|
||||
}
|
||||
|
||||
func InitGame() *Game {
|
||||
ebiten.SetWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT)
|
||||
ebiten.SetWindowSize(WindowWidth, WindowHeight)
|
||||
ebiten.SetWindowTitle("Snake")
|
||||
|
||||
fontFile, err := os.Open("fonts/rockers_garage.ttf")
|
||||
@@ -49,7 +50,7 @@ func InitGame() *Game {
|
||||
font: font,
|
||||
titleImg: initTitle(font),
|
||||
state: MainMenu,
|
||||
snake: InitSnake(WINDOW_WIDTH, WINDOW_HEIGHT),
|
||||
snake: InitSnake(WindowWidth, WindowHeight),
|
||||
menu: InitMenu(),
|
||||
}
|
||||
}
|
||||
@@ -67,12 +68,21 @@ func (g *Game) Update() error {
|
||||
g.snake.Move()
|
||||
|
||||
if g.snake.HasCollided() {
|
||||
g.snake.isDead = true
|
||||
g.state = Dead
|
||||
// g.snake.isDead = true
|
||||
}
|
||||
|
||||
if g.snake.isDead {
|
||||
g.snake.Click(g)
|
||||
if g.snake.score == g.snake.total {
|
||||
g.state = Won
|
||||
// g.snake.hasWon = true
|
||||
}
|
||||
|
||||
// if g.snake.isDead || g.snake.hasWon {
|
||||
// g.snake.Click(g)
|
||||
// }
|
||||
|
||||
case Dead, Won:
|
||||
g.snake.Click(g)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -87,28 +97,34 @@ func (g *Game) Draw(screen *ebiten.Image) {
|
||||
|
||||
case Playing:
|
||||
g.snake.Render(screen, g.font)
|
||||
|
||||
case Won:
|
||||
g.snake.renderWinScreen(screen, g.font)
|
||||
|
||||
case Dead:
|
||||
g.snake.renderDeadScreen(screen, g.font)
|
||||
}
|
||||
}
|
||||
|
||||
func (g *Game) Layout(outsideWith, outsideHeight int) (screenWidth, screenHeight int) {
|
||||
return WINDOW_WIDTH, WINDOW_HEIGHT
|
||||
return WindowWidth, WindowHeight
|
||||
}
|
||||
|
||||
func initTitle(font *text.GoTextFaceSource) *ebiten.Image {
|
||||
face := &text.GoTextFace{
|
||||
Source: font,
|
||||
Size: 60,
|
||||
Size: 30,
|
||||
}
|
||||
|
||||
titleW, _ := text.Measure("snake", face, 0)
|
||||
|
||||
fontOptions := &text.DrawOptions{}
|
||||
fontOptions.GeoM.Translate(float64(WINDOW_WIDTH)/2-titleW/2, 10)
|
||||
fontOptions.GeoM.Translate(float64(WindowWidth)/2-titleW/2, 10)
|
||||
fontOptions.ColorScale.ScaleWithColor(color.RGBA{194, 169, 60, 1})
|
||||
|
||||
h := float64(WINDOW_HEIGHT) * 0.1
|
||||
h := float64(WindowHeight) * 0.1
|
||||
|
||||
titleImg := ebiten.NewImage(WINDOW_WIDTH, int(h))
|
||||
titleImg := ebiten.NewImage(WindowWidth, int(h))
|
||||
|
||||
text.Draw(titleImg, "snake", face, fontOptions)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user