示例#1
0
 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); });
 }
示例#2
0
        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);
        }
示例#3
0
 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);
     }
 }
示例#4
0
 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;
     }
 }
示例#5
0
        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);
        }
示例#6
0
 private Move(PieceEnum piece, RokadeEnum rokade)
 {
     Piece  = piece;
     Rokade = rokade;
 }
示例#7
0
 private static Option <Move> ValidateRokade(RokadeEnum rokade)
 => RokadeEnum.None.Equals(rokade) ? None : Some(new Move(PieceEnum.King, rokade));
示例#8
0
 public static Option <Move> Of(RokadeEnum rokade)
 => ValidateRokade(rokade);
示例#9
0
        public static string ConvertRokadeToString(RokadeEnum whiteRokade, RokadeEnum blackRokade)
        {
            string rokadeString = ConvertRokadeToString(whiteRokade, true) + ConvertRokadeToString(blackRokade, false);

            return("".Equals(rokadeString) ? "-" : rokadeString);
        }