mirror of
https://github.com/wahyd4/zombie.git
synced 2026-08-09 04:35:54 +10:00
69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package models
|
|
|
|
import "fmt"
|
|
|
|
const (
|
|
minimumValueOnAXis = 0
|
|
)
|
|
|
|
// Zombie represents a zombie object
|
|
type Zombie struct {
|
|
GridSize int
|
|
Coordinate Coordinate
|
|
}
|
|
|
|
// Coordinate represents the location in the grid of the zombie
|
|
type Coordinate struct {
|
|
XAxis int
|
|
YAxis int
|
|
}
|
|
|
|
// MoveUp deals with zombie moving up
|
|
func (zombie *Zombie) MoveUp() {
|
|
y := zombie.Coordinate.YAxis
|
|
if y == minimumValueOnAXis {
|
|
zombie.Coordinate.YAxis = zombie.maxValueOnAxis()
|
|
return
|
|
}
|
|
zombie.Coordinate.YAxis--
|
|
}
|
|
|
|
// MoveDown deals with zombie moving down
|
|
func (zombie *Zombie) MoveDown() {
|
|
y := zombie.Coordinate.YAxis
|
|
if y == zombie.maxValueOnAxis() {
|
|
zombie.Coordinate.YAxis = minimumValueOnAXis
|
|
return
|
|
}
|
|
zombie.Coordinate.YAxis++
|
|
}
|
|
|
|
// MoveLeft deals with zombie moving down
|
|
func (zombie *Zombie) MoveLeft() {
|
|
x := zombie.Coordinate.XAxis
|
|
if x == minimumValueOnAXis {
|
|
zombie.Coordinate.XAxis = zombie.maxValueOnAxis()
|
|
return
|
|
}
|
|
zombie.Coordinate.XAxis--
|
|
}
|
|
|
|
// MoveRight deals with zombie moving down
|
|
func (zombie *Zombie) MoveRight() {
|
|
x := zombie.Coordinate.XAxis
|
|
if x == zombie.maxValueOnAxis() {
|
|
zombie.Coordinate.XAxis = minimumValueOnAXis
|
|
return
|
|
}
|
|
zombie.Coordinate.XAxis++
|
|
}
|
|
|
|
// PrintLocation prints out the current coordinate
|
|
func (zombie *Zombie) PrintLocation() string {
|
|
return fmt.Sprintf("(%d,%d)", zombie.Coordinate.XAxis, zombie.Coordinate.YAxis)
|
|
}
|
|
|
|
func (zombie *Zombie) maxValueOnAxis() int {
|
|
return zombie.GridSize - 1
|
|
}
|