public ChessMove Get() { string connstr = Environment.GetEnvironmentVariable("DWKDBConnectionString"); using (DWKDBDataContext DB = new DWKDBDataContext(connstr)) { ChessMove move = new ChessMove(); move.WebID = DB.GetNewGame(selfPlay: false).Single().WebID; move.ThisMove = "RNBKQBNRPPPPPPPP................................pppppppprnbkqbnr".Replace(".", "x"); //DB.SaveMove(move.WebID, move.ThisMove); return(move); } }
public ChessMove Get() { string connstr = Environment.GetEnvironmentVariable("DWKDBConnectionString"); using (DWKDBDataContext DB = new DWKDBDataContext(connstr)) { ChessMove move = new ChessMove(); Player white = new Player(SQLChess.PlayerColor.White); white.OpponentsMove = "RNBKQBNRPPPPPPPP................................pppppppprnbkqbnr"; white.MyLastMove = ""; white.KingHasMoved = false; white.KingsRookHasMoved = false; white.QueensRookHasMoved = false; string board = white.Move(); move.WebID = DB.GetNewGame(selfPlay: false).Single().WebID; DB.SaveMove(move.WebID, board); move.ThisMove = board.Replace(".", "x"); return(move); } }
public ChessMove Get(string id) { string connstr = Environment.GetEnvironmentVariable("DWKDBConnectionString"); using (DWKDBDataContext DB = new DWKDBDataContext(connstr)) { id = id.Replace("x", "."); var parms = id.Split('|'); Player player = null; ChessMove move = new ChessMove(); move.WebID = parms[0]; move.ThisMove = parms[1]; // here we will want to do some validation // first we will want to validate that the parameters look correct. // TODO: verify parameters var movesList = DB.GetGameByWebID(move.WebID).ToList(); CastleCriteria cc = CheckForCastleCriteria(movesList); if (cc.lastPlayerIsWhite) { //if last player was white then player is black player = new Player(SQLChess.PlayerColor.Black); player.KingHasMoved = cc.BlackKingHasMoved; player.KingsRookHasMoved = cc.BlackKingsRookHasMoved; player.QueensRookHasMoved = cc.BlackQueensRookHasMoved; move.Color = "B"; } else { player = new Player(SQLChess.PlayerColor.White); player.KingHasMoved = cc.WhiteKingHasMoved; player.KingsRookHasMoved = cc.WhiteKingsRookHasMoved; player.QueensRookHasMoved = cc.WhiteQueensRookHasMoved; move.Color = "W"; } if (movesList.Count == 0) { player.OpponentsMove = "RNBKQBNRPPPPPPPP................................pppppppprnbkqbnr"; player.MyLastMove = ""; } else if (movesList.Count == 1) { player.OpponentsMove = movesList.Last().Board; player.MyLastMove = ""; } else { player.OpponentsMove = movesList.Last().Board; player.MyLastMove = movesList.Skip(movesList.Count - 2).First().Board; } List <string> legalMoves = player.FindLegalMoves(); if (legalMoves.Count < 1) { bool inCheck = player.AmIChecked(player.OpponentsMove); if (inCheck) { move.ThisMove = string.Format("Checkmate: {0} loses.", player.PlayerIsWhite ? "White" : "Black"); move.IsCheckmate = true; DB.SaveMove(move.WebID, move.ThisMove); DB.SaveGameByWebID(move.WebID); return(move); } else { move.ThisMove = string.Format("Stalemate: {0} out of legal moves.", player.PlayerIsWhite ? "White" : "Black"); move.IsStalemate = true; DB.SaveMove(move.WebID, move.ThisMove); DB.SaveGameByWebID(move.WebID); return(move); } } else if (legalMoves.Contains(move.ThisMove)) { DB.SaveMove(move.WebID, move.ThisMove); move.MyLastMove = player.MyLastMove; move.IsLegalMove = true; } else { move.MyLastMove = player.MyLastMove; move.ThisMove = player.OpponentsMove.Replace(".", "x"); move.IsLegalMove = false; return(move); } //*------------------------------------------- movesList = DB.GetGameByWebID(move.WebID).ToList(); cc = CheckForCastleCriteria(movesList); if (cc.lastPlayerIsWhite) { //if last player was white then player is black player = new Player(SQLChess.PlayerColor.Black); player.KingHasMoved = cc.BlackKingHasMoved; player.KingsRookHasMoved = cc.BlackKingsRookHasMoved; player.QueensRookHasMoved = cc.BlackQueensRookHasMoved; move.Color = "B"; } else { player = new Player(SQLChess.PlayerColor.White); player.KingHasMoved = cc.WhiteKingHasMoved; player.KingsRookHasMoved = cc.WhiteKingsRookHasMoved; player.QueensRookHasMoved = cc.WhiteQueensRookHasMoved; move.Color = "W"; } if (movesList.Count > 1) { player.MyLastMove = movesList.Skip(movesList.Count - 2).First().Board; } else { player.MyLastMove = ""; } player.OpponentsMove = movesList.Skip(movesList.Count - 2).Last().Board; move.ThisMove = player.Move(); if (move.ThisMove == string.Format("Checkmate: {0} loses.", player.PlayerIsWhite ? "White" : "Black")) { move.IsCheckmate = true; DB.SaveMove(move.WebID, move.ThisMove); DB.SaveGameByWebID(move.WebID); return(move); } else if (move.ThisMove == string.Format("Stalemate: {0} out of legal moves.", player.PlayerIsWhite ? "White" : "Black")) { move.IsStalemate = true; DB.SaveMove(move.WebID, move.ThisMove); DB.SaveGameByWebID(move.WebID); return(move); } else { DB.SaveMove(move.WebID, move.ThisMove); move.IsLegalMove = true; move.ThisMove = move.ThisMove.Replace(".", "x"); return(move); } } }