diff --git a/src/lib/chess/utils.ts b/src/lib/chess/utils.ts index ca00f08..c597548 100644 --- a/src/lib/chess/utils.ts +++ b/src/lib/chess/utils.ts @@ -3,46 +3,41 @@ import { Piece } from "./types"; // export function fen2array(fen: string): Int8Array { // } +export const startFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0"; +const CHAR_TO_PIECE: Record = { + "K": Piece.WHITE | Piece.KING, + "Q": Piece.WHITE | Piece.QUEEN, + "R": Piece.WHITE | Piece.ROOK, + "B": Piece.WHITE | Piece.BISHOP, + "N": Piece.WHITE | Piece.KNIGHT, + "P": Piece.WHITE | Piece.PAWN, + "k": Piece.BLACK | Piece.KING, + "q": Piece.BLACK | Piece.QUEEN, + "r": Piece.BLACK | Piece.ROOK, + "b": Piece.BLACK | Piece.BISHOP, + "n": Piece.BLACK | Piece.KNIGHT, + "p": Piece.BLACK | Piece.PAWN, +}; export class Board { - public board: Int8Array; + public board = new Int8Array(8 ** 2); + public details = { + turn: "w", + castling: { + white: { king: true, queen: true }, + black: { king: true, queen: true }, + }, + enPassant: -1, + halfMove: 0, + fullMove: 0, + }; constructor() { - const board = new Int8Array(8**2); - board[0] = Piece.WHITE | Piece.ROOK; - board[1] = Piece.WHITE | Piece.KNIGHT; - board[2] = Piece.WHITE | Piece.BISHOP; - board[3] = Piece.WHITE | Piece.QUEEN; - board[4] = Piece.WHITE | Piece.KING; - board[5] = Piece.WHITE | Piece.BISHOP; - board[6] = Piece.WHITE | Piece.KNIGHT; - board[7] = Piece.WHITE | Piece.ROOK; - board[8] = Piece.WHITE | Piece.PAWN; - board[9] = Piece.WHITE | Piece.PAWN; - board[10] = Piece.WHITE | Piece.PAWN; - board[11] = Piece.WHITE | Piece.PAWN; - board[12] = Piece.WHITE | Piece.PAWN; - board[13] = Piece.WHITE | Piece.PAWN; - board[14] = Piece.WHITE | Piece.PAWN; - board[15] = Piece.WHITE | Piece.PAWN; + this.loadFEN(); + } - board[48] = Piece.BLACK | Piece.PAWN; - board[49] = Piece.BLACK | Piece.PAWN; - board[50] = Piece.BLACK | Piece.PAWN; - board[51] = Piece.BLACK | Piece.PAWN; - board[52] = Piece.BLACK | Piece.PAWN; - board[53] = Piece.BLACK | Piece.PAWN; - board[54] = Piece.BLACK | Piece.PAWN; - board[55] = Piece.BLACK | Piece.PAWN; - board[56] = Piece.BLACK | Piece.ROOK; - board[57] = Piece.BLACK | Piece.KNIGHT; - board[58] = Piece.BLACK | Piece.BISHOP; - board[59] = Piece.BLACK | Piece.QUEEN; - board[60] = Piece.BLACK | Piece.KING; - board[61] = Piece.BLACK | Piece.BISHOP; - board[62] = Piece.BLACK | Piece.KNIGHT; - board[63] = Piece.BLACK | Piece.ROOK; - - this.board = board; - return this; + loadFEN(fen = startFEN) { + const [position, turn, castling, enPassant, halfMove, fullMove] = fen.split(" "); + + } } \ No newline at end of file diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..a3d1578 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1 @@ +export const ssr = false; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4225948..bd4c54e 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,8 +1,9 @@
@@ -10,14 +11,18 @@
- {#if square}{square}{/if} + {#if square}p{square}{/if} {showIndex ? index : ''}
{/each}
-
\ No newline at end of file