Refactor into cmd, engine and game packages to make the code more clear
This commit is contained in:
parent
ebf8e820f1
commit
dd37379bc5
9 changed files with 6 additions and 6 deletions
25
game/assets/def.go
Normal file
25
game/assets/def.go
Normal 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
31
game/assets/level1.dat
Normal 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
8
game/assets/levels.go
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
package assets
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
)
|
||||
|
||||
//go:embed level1.dat
|
||||
var Level1 []byte
|
||||
52
game/world/maze.go
Normal file
52
game/world/maze.go
Normal 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue