mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
25 lines
827 B
C#
25 lines
827 B
C#
namespace Queen;
|
|
|
|
internal record struct Position(int Diagonal, int Row)
|
|
{
|
|
public static readonly Position Zero = new(0);
|
|
|
|
public Position(int number)
|
|
: this(Diagonal: number / 10, Row: number % 10)
|
|
{
|
|
}
|
|
|
|
public bool IsZero => Row == 0 && Diagonal == 0;
|
|
public bool IsStart => Row == 1 || Row == Diagonal;
|
|
public bool IsEnd => Row == 8 && Diagonal == 15;
|
|
|
|
public override string ToString() => $"{Diagonal}{Row}";
|
|
|
|
public static implicit operator Position(int value) => new(value);
|
|
|
|
public static Position operator +(Position position, Move move)
|
|
=> new(Diagonal: position.Diagonal + move.Diagonal, Row: position.Row + move.Row);
|
|
public static Move operator -(Position to, Position from)
|
|
=> new(Diagonal: to.Diagonal - from.Diagonal, Row: to.Row - from.Row);
|
|
}
|