public void KingMoves() { for (int i = 0; i < 64; ++i) { IEnumerable <ChessMove> kingMoves = ChessMove.KingMoves(i); int dist = DistanceFromEdge(i, out int rdist, out int fdist); int nmoves = 0; switch (dist) { case 0: nmoves = (rdist > 0 || fdist > 0) ? 5 : 3; break; default: nmoves = 8; break; } Assert.AreEqual(nmoves, kingMoves.Count(), $"# King moves from {i}"); } }
internal override IEnumerable <ChessMove> GetValidMoves() => ChessMove.KingMoves((int)CurrentSquare);