X-Git-Url: https://git.auder.net/images/pieces/%24%7BgetWhatsApp%28link%29%7D?a=blobdiff_plain;f=base_rules.js;h=a8dad15c575141e666b5326289ca7d36fee37a1d;hb=b57b726c569a1a0f21b7f3ca00956bc2f26a6f3e;hp=aa499f84f9275a5d1a980ac2bc6c98e9c6f78bc9;hpb=ceeac4e82346ffba2d87d763df3cffcddaec912a;p=xogo.git diff --git a/base_rules.js b/base_rules.js index aa499f8..a8dad15 100644 --- a/base_rules.js +++ b/base_rules.js @@ -640,7 +640,7 @@ export default class ChessRules { const color = this.getColor(i, j); const piece = this.getPiece(i, j); addPiece(i, j, "g_pieces", this.pieces(color, i, j)[piece]["class"]); - this.g_pieces[i][j].classList.add(C.GetColorClass(color)); + this.g_pieces[i][j].classList.add(V.GetColorClass(color)); if (this.enlightened && !this.enlightened[i][j]) this.g_pieces[i][j].classList.add("hidden"); } @@ -707,7 +707,7 @@ export default class ChessRules { rcontainer.appendChild(r_cell); let piece = document.createElement("piece"); C.AddClass_es(piece, this.pieces(c, c, p)[p]["class"]); - piece.classList.add(C.GetColorClass(c)); + piece.classList.add(V.GetColorClass(c)); piece.style.width = "100%"; piece.style.height = "100%"; this.r_pieces[c][p] = piece; @@ -1016,7 +1016,7 @@ export default class ChessRules { const cdisp = moves[i].choice || moves[i].appear[0].p; C.AddClass_es(piece, this.pieces(color, moves[i].end.x, moves[i].end.y)[cdisp]["class"]); - piece.classList.add(C.GetColorClass(color)); + piece.classList.add(V.GetColorClass(color)); piece.style.width = "100%"; piece.style.height = "100%"; choice.appendChild(piece); @@ -1849,9 +1849,7 @@ export default class ChessRules { { captureTarget: [x, y], captureSteps: [{steps: [s], range: a.range}], - segments: o.segments, - attackOnly: true, - one: false //one and captureTarget are mutually exclusive + segments: o.segments }, allowed ); @@ -1989,7 +1987,7 @@ export default class ChessRules { oppCols.includes(this.getColor(x, this.epSquare.y)) ) { const [epx, epy] = [this.epSquare.x, this.epSquare.y]; - this.board[epx][epy] = this.board[x][this.epSquares.y]; + this.board[epx][epy] = this.board[x][this.epSquare.y]; let enpassantMove = this.getBasicMove([x, y], [epx, epy]); this.board[epx][epy] = ""; const lastIdx = enpassantMove.vanish.length - 1; //think Rifle @@ -2167,36 +2165,30 @@ export default class ChessRules { color = this.turn; const oppCols = this.getOppCols(color); let kingPos = this.searchKingPos(color); - let filtered = {}; //avoid re-checking similar moves (promotions...) return moves.filter(m => { - const key = m.start.x + m.start.y + '.' + m.end.x + m.end.y; - if (!filtered[key]) { - this.playOnBoard(m); - let newKingPP = null, - sqIdx = 0, - res = true; //a priori valid - const oldKingPP = - m.vanish.find(v => this.isKing(0, 0, v.p) && v.c == color); - if (oldKingPP) { - // Search king in appear array: - newKingPP = - m.appear.find(a => this.isKing(0, 0, a.p) && a.c == color); - if (newKingPP) { - sqIdx = kingPos.findIndex(kp => - kp[0] == oldKingPP.x && kp[1] == oldKingPP.y); - kingPos[sqIdx] = [newKingPP.x, newKingPP.y]; - } - else - res = false; //king vanished + this.playOnBoard(m); + let newKingPP = null, + sqIdx = 0, + res = true; //a priori valid + const oldKingPP = + m.vanish.find(v => this.isKing(0, 0, v.p) && v.c == color); + if (oldKingPP) { + // Search king in appear array: + newKingPP = + m.appear.find(a => this.isKing(0, 0, a.p) && a.c == color); + if (newKingPP) { + sqIdx = kingPos.findIndex(kp => + kp[0] == oldKingPP.x && kp[1] == oldKingPP.y); + kingPos[sqIdx] = [newKingPP.x, newKingPP.y]; } - res &&= !this.underCheck(kingPos, oppCols); - if (oldKingPP && newKingPP) - kingPos[sqIdx] = [oldKingPP.x, oldKingPP.y]; - this.undoOnBoard(m); - filtered[key] = res; - return res; + else + res = false; //king vanished } - return filtered[key]; + res &&= !this.underCheck(kingPos, oppCols); + if (oldKingPP && newKingPP) + kingPos[sqIdx] = [oldKingPP.x, oldKingPP.y]; + this.undoOnBoard(m); + return res; }); } @@ -2400,9 +2392,9 @@ export default class ChessRules { if (kingPos[this.turn].length == 0 && kingPos[oppTurn].length == 0) return "1/2"; if (kingPos[this.turn].length == 0) - return (color == "w" ? "0-1" : "1-0"); + return (this.turn == "w" ? "0-1" : "1-0"); if (kingPos[oppTurn].length == 0) - return (color == "w" ? "1-0" : "0-1"); + return (this.turn == "w" ? "1-0" : "0-1"); if (this.atLeastOneMove(this.turn)) return "*"; // No valid move: stalemate or checkmate? @@ -2426,7 +2418,7 @@ export default class ChessRules { this.g_pieces[a.x][a.y] = document.createElement("piece"); C.AddClass_es(this.g_pieces[a.x][a.y], this.pieces(a.c, a.x, a.y)[a.p]["class"]); - this.g_pieces[a.x][a.y].classList.add(C.GetColorClass(a.c)); + this.g_pieces[a.x][a.y].classList.add(V.GetColorClass(a.c)); this.g_pieces[a.x][a.y].style.width = pieceWidth + "px"; this.g_pieces[a.x][a.y].style.height = pieceWidth + "px"; const [ip, jp] = this.getPixelPosition(a.x, a.y, r); @@ -2503,8 +2495,8 @@ export default class ChessRules { C.RemoveClass_es(movingPiece, pieces[startCode]["class"]); C.AddClass_es(movingPiece, pieces[drag.p]["class"]); if (apparentColor != drag.c) { - movingPiece.classList.remove(C.GetColorClass(apparentColor)); - movingPiece.classList.add(C.GetColorClass(drag.c)); + movingPiece.classList.remove(V.GetColorClass(apparentColor)); + movingPiece.classList.add(V.GetColorClass(drag.c)); } } container.appendChild(movingPiece);