public void GetMoves(Vector2 pos, Board.PieceType type) { switch (type) { case Board.PieceType.king: moves = GetTiles(GetKingMoves(pos)); break; case Board.PieceType.queen: moves = GetTiles(GetQueenMoves(pos)); break; case Board.PieceType.knight: moves = GetTiles(GetKnightMoves(pos)); break; case Board.PieceType.bishop: moves = GetTiles(GetBishopMoves(pos)); break; case Board.PieceType.rook: moves = GetTiles(GetRookMoves(pos)); break; case Board.PieceType.pawn: moves = GetTiles(GetPawnMoves(pos)); break; default: break; } }
// This is static only because PromoteMenu doesn't exist in the scene until the game starts public static void Promote(PieceType type) { Square needsPromotion = instance.board.needsPromotion; bool success = instance.board.Promote(type); Debug.Assert(success); instance.UpdateScene(new List <Move>() { new Move(needsPromotion, needsPromotion, type) }); }
public void SetCanMove(bool state) { currentTurn = state; foreach (GameObject piece in alivePieces) { pieceComponent = piece.GetComponent <Piece>(); pos = pieceComponent.parentTile.GetComponent <Tile>().pos; pieceType = pieceComponent.type; piece.GetComponent <Piece>().canMove = state; piece.GetComponent <Moves>().GetMoves(pos, pieceType); } }
/** Return a heuristic value for BOARD. This can be improved. */ private int StaticScore(Board board) { BoardStatus status = board.status; if (status == BoardStatus.Checkmate) { if (board.whoseTurn == PieceColor.White) { return(WIN_VALUE); } else { return(-WIN_VALUE); } } else if (status != BoardStatus.Playing) // AI shouldn't need to think about the promote state { return(0); } // TODO: quantify threats int score = 0; foreach (Square s in Square.squares) { PieceData?p = board.GetPiece(s); if (p == null) { continue; } PieceType type = p.Value.type; if (type == PieceType.King) { continue; } if (p.Value.color == PieceColor.White) { score += PIECE_VALUES[(int)type]; } else { score -= PIECE_VALUES[(int)type]; } } return(score); }
private void SetPieceSprite(Board.PieceType type, Board.Colours colour, ref SpriteRenderer sr) { switch (type) { case Board.PieceType.king: switch (colour) { case Board.Colours.black: sr.sprite = sprites.kingBlack; break; case Board.Colours.white: sr.sprite = sprites.kingWhite; break; } break; case Board.PieceType.queen: switch (colour) { case Board.Colours.black: sr.sprite = sprites.queenBlack; break; case Board.Colours.white: sr.sprite = sprites.queenWhite; break; } break; case Board.PieceType.knight: switch (colour) { case Board.Colours.black: sr.sprite = sprites.knightBlack; break; case Board.Colours.white: sr.sprite = sprites.knightWhite; break; } break; case Board.PieceType.bishop: switch (colour) { case Board.Colours.black: sr.sprite = sprites.bishopBlack; break; case Board.Colours.white: sr.sprite = sprites.bishopWhite; break; } break; case Board.PieceType.rook: switch (colour) { case Board.Colours.black: sr.sprite = sprites.rookBlack; break; case Board.Colours.white: sr.sprite = sprites.rookWhite; break; } break; case Board.PieceType.pawn: switch (colour) { case Board.Colours.black: sr.sprite = sprites.pawnBlack; break; case Board.Colours.white: sr.sprite = sprites.pawnWhite; break; } break; } }