Chess Board
Chess Board
1. Chess board.java
2. import React, { useState } from 'react';
3. import { Board, Position, ChessPiece } from '@/types/chess';
4. import { createInitialBoard, getPieceMoves } from
'@/utils/chessLogic';
5.
6. const ChessBoard = () => {
7. const [board, setBoard] =
useState<Board>(createInitialBoard());
8. const [selectedPosition, setSelectedPosition] =
useState<Position | null>(null);
9. const [possibleMoves, setPossibleMoves] =
useState<Position[]>([]);
10. const [currentPlayer, setCurrentPlayer] =
useState<'white' | 'black'>('white');
11.
12. const handleSquareClick = (row: number, col: number) => {
13. const clickedPosition = { row, col };
14. const clickedPiece = board[row][col];
15.
16. // If no piece is selected
17. if (!selectedPosition) {
18. if (clickedPiece && clickedPiece.color ===
currentPlayer) {
19. setSelectedPosition(clickedPosition);
20. setPossibleMoves(getPieceMoves(board,
clickedPosition, clickedPiece));
21. }
22. return;
23. }
24.
25. // If a piece is already selected
26. const selectedPiece = board[selectedPosition.row]
[selectedPosition.col];
27. if (!selectedPiece) return;
28.
29. // Check if the clicked position is a valid move
30. const isValidMove = possibleMoves.some(
31. move => move.row === row && move.col === col
32. );
33.
34. if (isValidMove) {
35. // Make the move
36. const newBoard = board.map(row => [...row]);
37. newBoard[row][col] = selectedPiece;
2.Chess board.java
3.chesslogic.java
// Place pawns
for (let i = 0; i < 8; i++) {
board[1][i] = { type: 'pawn', color: 'black' };
board[6][i] = { type: 'pawn', color: 'white' };
}
board[0] = pieceOrder;
board[7] = pieceOrder.map(piece => piece ? { ...piece, color: 'white'
} : null);
return board;
};
return true;
};
// Capture diagonally
const captureSquares = [
{ row: row + direction, col: col - 1 },
{ row: row + direction, col: col + 1 },
];
captureSquares.forEach(square => {