Files
minotaur/pkg/maze/position/position.go
T
2026-10-25 02:51:07 +00:00

54 lines
890 B
Go

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),
}
}