public void CanRokade(string fenString, RokadeEnum expected) { Fen.Of(fenString).CreatePositionAbstraction() .Match( None: () => { Assert.Fail(); return(true); }, Some: p => { Assert.AreEqual(expected, possibleRokade(p)); return(true); }); }
private RokadeEnum GetRokadeFromString(char king, char queen) { RokadeEnum r = 0; string rString = FenString.Split(' ')[2]; r |= rString.Contains(king) ? RokadeEnum.KingSide : RokadeEnum.None; r |= rString.Contains(queen) ? RokadeEnum.QueenSide : RokadeEnum.None; return(r); }
public static SquareEnum GetKingRokadeSquare(this RokadeEnum rokade, bool isWhiteToMove) { if (RokadeEnum.KingSide.Equals(rokade)) { return(isWhiteToMove ? SquareEnum.g1 : SquareEnum.g8); } else { return(isWhiteToMove ? SquareEnum.c1 : SquareEnum.c8); } }
private Move(PieceEnum piece, SquareEnum?from = null, SquareEnum?to = null, PieceEnum?promote = null) { Piece = piece; Rokade = RokadeEnum.None; if (from.HasValue) { From = from.Value; Promote = Piece; } if (to.HasValue) { To = to.Value; } if (promote.HasValue) { Promote = promote.Value; } }
public static string ConvertRokadeToString(RokadeEnum rokade, bool IsWhite) { if (RokadeEnum.None.Equals(rokade)) { return(""); } string rokadeString = ""; if (RokadeEnum.KingSide.Equals(RokadeEnum.KingSide & rokade)) { rokadeString = "k"; } if (RokadeEnum.QueenSide.Equals(RokadeEnum.QueenSide & rokade)) { rokadeString += "q"; } if (IsWhite) { rokadeString = rokadeString.ToUpperInvariant(); } return(rokadeString); }
private Move(PieceEnum piece, RokadeEnum rokade) { Piece = piece; Rokade = rokade; }
private static Option <Move> ValidateRokade(RokadeEnum rokade) => RokadeEnum.None.Equals(rokade) ? None : Some(new Move(PieceEnum.King, rokade));
public static Option <Move> Of(RokadeEnum rokade) => ValidateRokade(rokade);
public static string ConvertRokadeToString(RokadeEnum whiteRokade, RokadeEnum blackRokade) { string rokadeString = ConvertRokadeToString(whiteRokade, true) + ConvertRokadeToString(blackRokade, false); return("".Equals(rokadeString) ? "-" : rokadeString); }