Files
basic-computer-games/72_Queen/csharp/Move.cs
2023-01-28 16:30:49 +11:00

15 lines
543 B
C#

namespace Queen;
internal record struct Move(int Diagonal, int Row)
{
public static readonly Move Left = new(1, 0);
public static readonly Move DownLeft = new(2, 1);
public static readonly Move Down = new(1, 1);
public bool IsValid => Diagonal > 0 && (IsLeft || IsDown || IsDownLeft);
private bool IsLeft => Row == 0;
private bool IsDown => Row == Diagonal;
private bool IsDownLeft => Row * 2 == Diagonal;
public static Move operator *(Move move, int scale) => new(move.Diagonal * scale, move.Row * scale);
}