diff --git a/frontend/jsconfig.json b/frontend/jsconfig.json index 8225e17..bdf396d 100644 --- a/frontend/jsconfig.json +++ b/frontend/jsconfig.json @@ -1,5 +1,5 @@ { - "compilerOptions" : { + "compilerOptions": { "checkJs": true, "target": "es6" } diff --git a/frontend/main.js b/frontend/main.js index 88e88b1..f1e6527 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -1,31 +1,33 @@ -import * as visuals from './visuals.js'; +import * as visuals from "./visuals.js"; function setupBoard() { let pawns = []; - for (let x of 'abcdefgh') { - pawns.push(new Piece('pawn', 'black', `${x}7`), - new Piece('pawn', 'white', `${x}2`)); + for (let x of "abcdefgh") { + pawns.push( + new Piece("pawn", "black", `${x}7`), + new Piece("pawn", "white", `${x}2`) + ); } return new Configuration([ - new Piece('rook', 'black', 'a8'), - new Piece('rook', 'black', 'h8'), - new Piece('knight', 'black', 'b8'), - new Piece('knight', 'black', 'g8'), - new Piece('bishop', 'black', 'c8'), - new Piece('bishop', 'black', 'f8'), - new Piece('queen', 'black', 'd8'), - new Piece('king', 'black', 'e8'), + new Piece("rook", "black", "a8"), + new Piece("rook", "black", "h8"), + new Piece("knight", "black", "b8"), + new Piece("knight", "black", "g8"), + new Piece("bishop", "black", "c8"), + new Piece("bishop", "black", "f8"), + new Piece("queen", "black", "d8"), + new Piece("king", "black", "e8"), ...pawns, - new Piece('rook', 'white', 'a1'), - new Piece('rook', 'white', 'h1'), - new Piece('knight', 'white', 'b1'), - new Piece('knight', 'white', 'g1'), - new Piece('bishop', 'white', 'c1'), - new Piece('bishop', 'white', 'f1'), - new Piece('queen', 'white', 'd1'), - new Piece('king', 'white', 'e1'), + new Piece("rook", "white", "a1"), + new Piece("rook", "white", "h1"), + new Piece("knight", "white", "b1"), + new Piece("knight", "white", "g1"), + new Piece("bishop", "white", "c1"), + new Piece("bishop", "white", "f1"), + new Piece("queen", "white", "d1"), + new Piece("king", "white", "e1"), ]); } @@ -41,7 +43,7 @@ class Backend { return this.config.clone(); } getAvailableMoves(position) { - return [] + return []; } } @@ -63,13 +65,11 @@ class Chess { this.configVis = new visuals.ConfigVis(config.pieces); this.configVis.draw(this.canvas); } - showAvailableMoves(canMoveTo) { - } + showAvailableMoves(canMoveTo) {} click(ev) { if (this.moveSource === null) { this._firstClick(ev); - } - else { + } else { this._secondClick(ev); } } @@ -86,7 +86,7 @@ class Chess { let move = { from: this.moveSource, to: visuals.rowColToBoardIndex(...rcB), - } + }; this.backend.makeMove(move); this.syncBackend(); } @@ -118,7 +118,7 @@ class Piece { class Configuration { constructor(pieces) { - this.pieces = pieces + this.pieces = pieces; } clone() { let pieces = []; @@ -128,20 +128,21 @@ class Configuration { return new Configuration(pieces); } getAt(position) { - return this.pieces.find(piece => piece.position === position) || null; + return this.pieces.find((piece) => piece.position === position) || null; } dropAt(position) { return new Configuration( - this.pieces.filter(piece => piece.position !== position) + this.pieces.filter((piece) => piece.position !== position) ); } makeMove(move) { const pieceToMove = this.getAt(move.from); if (pieceToMove === null) return this; - else return new Configuration([ - ...(this.dropAt(move.from).dropAt(move.to).pieces), - pieceToMove.moveTo(move.to) - ]) + else + return new Configuration([ + ...this.dropAt(move.from).dropAt(move.to).pieces, + pieceToMove.moveTo(move.to), + ]); } } diff --git a/frontend/visuals.js b/frontend/visuals.js index 5c0362e..70ceadd 100644 --- a/frontend/visuals.js +++ b/frontend/visuals.js @@ -1,10 +1,10 @@ const BOX_SIDE = 80; const INDEX_MARGIN = BOX_SIDE / 2; -const INDEX_LETTERS = 'abcdefgh'; +const INDEX_LETTERS = "abcdefgh"; export class Canvas { constructor() { - this._canvas = document.createElement('canvas'); + this._canvas = document.createElement("canvas"); let boardSide = BOX_SIDE * 8 + INDEX_MARGIN; this._canvas.width = boardSide; this._canvas.height = boardSide; @@ -13,27 +13,35 @@ export class Canvas { } drawChessBoard() { // Draw squares - let ctx = this._canvas.getContext('2d'); - ctx.fillStyle = '#c0c0c0'; + let ctx = this._canvas.getContext("2d"); + ctx.fillStyle = "#c0c0c0"; for (let r = 0; r < 8; r++) { for (let c = 0; c < 8; c++) { - if ((r + c) % 2) ctx.fillRect(c * BOX_SIDE + INDEX_MARGIN, - r * BOX_SIDE + INDEX_MARGIN, - BOX_SIDE, BOX_SIDE); + if ((r + c) % 2) + ctx.fillRect( + c * BOX_SIDE + INDEX_MARGIN, + r * BOX_SIDE + INDEX_MARGIN, + BOX_SIDE, + BOX_SIDE + ); } } // Draw letters - ctx.fillStyle = 'black'; + ctx.fillStyle = "black"; let fontsize = INDEX_MARGIN / 2; ctx.font = `${fontsize}px Monospace`; for (let idx = 0; idx < 8; idx++) { - ctx.fillText(INDEX_LETTERS[idx], + ctx.fillText( + INDEX_LETTERS[idx], BOX_SIDE * idx + BOX_SIDE / 2 + INDEX_MARGIN - fontsize / 4, - INDEX_MARGIN / 2); - ctx.fillText((8 - idx).toString(), + INDEX_MARGIN / 2 + ); + ctx.fillText( + (8 - idx).toString(), INDEX_MARGIN / 2 - fontsize / 4, - BOX_SIDE * idx + BOX_SIDE / 2 + INDEX_MARGIN + fontsize / 4); + BOX_SIDE * idx + BOX_SIDE / 2 + INDEX_MARGIN + fontsize / 4 + ); } } screenCoordsToRowCol(cx, cy) { @@ -49,9 +57,11 @@ export class Canvas { } rowColToScreenCoords(row, col) { let canvasRect = this._canvas.getBoundingClientRect(); - let topPx = canvasRect.top + INDEX_MARGIN + row * BOX_SIDE + window.pageYOffset; - let leftPx = canvasRect.left + INDEX_MARGIN + col * BOX_SIDE + window.pageXOffset; - return [topPx, leftPx] + let topPx = + canvasRect.top + INDEX_MARGIN + row * BOX_SIDE + window.pageYOffset; + let leftPx = + canvasRect.left + INDEX_MARGIN + col * BOX_SIDE + window.pageXOffset; + return [topPx, leftPx]; } } @@ -76,20 +86,20 @@ export class PieceVis { } draw(canvas) { let [topPx, leftPx] = canvas.rowColToScreenCoords( - ...boardIndexToRowCol(this.position), canvas + ...boardIndexToRowCol(this.position), + canvas ); if (this.im === null) { let im = new Image(BOX_SIDE, BOX_SIDE); im.src = this.icon; im.onload = () => { - im.style.position = 'absolute'; + im.style.position = "absolute"; im.style.top = `${topPx}px`; im.style.left = `${leftPx}px`; }; document.body.appendChild(im); this.im = im; - } - else { + } else { this.im.style.top = `${topPx}px`; this.im.style.left = `${leftPx}px`; }