Add maze pkg
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package position
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
|
||||
"code.chimeric.al/dwrz/minotaur/pkg/maze/direction"
|
||||
)
|
||||
|
||||
type Position struct {
|
||||
X, Y int
|
||||
}
|
||||
|
||||
func (p Position) Equal(v Position) bool {
|
||||
return p.X == v.X && p.Y == v.Y
|
||||
}
|
||||
|
||||
func (p Position) Down() Position {
|
||||
return Position{X: p.X, Y: p.Y + 1}
|
||||
}
|
||||
|
||||
func (p Position) Left() Position {
|
||||
return Position{X: p.X - 1, Y: p.Y}
|
||||
}
|
||||
|
||||
func (p Position) Right() Position {
|
||||
return Position{X: p.X + 1, Y: p.Y}
|
||||
}
|
||||
|
||||
func (p Position) Up() Position {
|
||||
return Position{X: p.X, Y: p.Y - 1}
|
||||
}
|
||||
|
||||
func (p Position) WithDirection(d direction.Direction) Position {
|
||||
switch d {
|
||||
case direction.Down:
|
||||
return p.Down()
|
||||
case direction.Left:
|
||||
return p.Left()
|
||||
case direction.Right:
|
||||
return p.Right()
|
||||
case direction.Up:
|
||||
return p.Up()
|
||||
default:
|
||||
return p
|
||||
}
|
||||
}
|
||||
|
||||
func Random(width, height int) Position {
|
||||
return Position{
|
||||
X: rand.Intn(width),
|
||||
Y: rand.Intn(height),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user