1
0
Fork 0

Refactor into cmd, engine and game packages to make the code more clear

This commit is contained in:
Henrik Hautakoski 2025-08-13 14:55:59 +02:00
parent ebf8e820f1
commit dd37379bc5
9 changed files with 6 additions and 6 deletions

25
game/assets/def.go Normal file
View file

@ -0,0 +1,25 @@
package assets
type Tile byte
const (
TILE_EMPTY Tile = '_'
TILE_PELLET Tile = '.'
TILE_POWER_PELLET Tile = '*'
TILE_CHERRY Tile = 'c'
TILE_STRAWBERRY Tile = 's'
TILE_PEACH Tile = 'p'
TILE_APPLE Tile = 'a'
TILE_MELLON Tile = 'm'
TILE_GALAXIAN Tile = 'g'
TILE_BELL Tile = 'b'
TILE_KEY Tile = 'k'
TILE_WALL Tile = 'X'
)
// The maze
const (
MAZE_WIDTH uint16 = 28
MAZE_HEIGHT uint16 = 31
)

31
game/assets/level1.dat Normal file
View file

@ -0,0 +1,31 @@
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
X............XX............X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X*X__X.X___X.XX.X___X.X__X*X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X..........................X
X.XXXX.XX.XXXXXXXX.XX.XXXX.X
X.XXXX.XX.XXXXXXXX.XX.XXXX.X
X......XX....XX....XX......X
XXXXXX.XXXXX_XX_XXXXX.XXXXXX
_____X.XXXXX_XX_XXXXX.X_____
_____X.XX__________XX.X_____
_____X.XX_XXXXXXXX_XX.X_____
XXXXXX.XX_X______X_XX.XXXXXX
______.___X______X___.______
XXXXXX.XX_X______X_XX.XXXXXX
_____X.XX_XXXXXXXX_XX.X_____
_____X.XX__________XX.X_____
_____X.XX_XXXXXXXX_XX.X_____
XXXXXX.XX_XXXXXXXX_XX.XXXXXX
X............XX............X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X.XXXX.XXXXX.XX.XXXXX.XXXX.X
X*..XX.......__.......XX..*X
XXX.XX.XX.XXXXXXXX.XX.XX.XXX
XXX.XX.XX.XXXXXXXX.XX.XX.XXX
X......XX....XX....XX......X
X.XXXXXXXXXX.XX.XXXXXXXXXX.X
X.XXXXXXXXXX.XX.XXXXXXXXXX.X
X..........................X
XXXXXXXXXXXXXXXXXXXXXXXXXXXX

8
game/assets/levels.go Normal file
View file

@ -0,0 +1,8 @@
package assets
import (
_ "embed"
)
//go:embed level1.dat
var Level1 []byte

52
game/world/maze.go Normal file
View file

@ -0,0 +1,52 @@
package world
import (
"pacman/game/assets"
)
const (
MAZE_WIDTH = assets.MAZE_WIDTH
MAZE_HEIGHT = assets.MAZE_HEIGHT
)
type Maze [MAZE_WIDTH * MAZE_HEIGHT]assets.Tile
// Create a new maze and load data.
func NewMaze(data []byte) Maze {
m := Maze{}
m.Load(data)
return m
}
// Load data into maze.
func (m *Maze) Load(data []byte) {
n_bytes := m.readMaze(data)
for i := n_bytes; i < len(m); i++ {
m[i] = 0
}
}
// Read maze data.
func (m *Maze) readMaze(data []byte) int {
i := 0
for _, x := range data {
if x == '\n' {
continue
}
m[i] = assets.Tile(x)
i++
if i >= len(m) {
break
}
}
return i
}
func (m Maze) At(x, y uint8) assets.Tile {
return m[uint16(x)+(uint16(y)*MAZE_WIDTH)]
}
func (m *Maze) Set(x, y uint8, value assets.Tile) {
m[uint16(x)+(uint16(y)*MAZE_WIDTH)] = value
}