X-Git-Url: https://git.auder.net/img/vendor/normalize.css?a=blobdiff_plain;f=variants%2FDobutsu%2Fclass.js;h=d8ceafae750b90d086c15e156645a310519b333c;hb=d66135396f3a6e140947545630004ce11f8eee7b;hp=7632a17bf1f3568b521f01a70755e15d408a4e96;hpb=3232aba3419f129c70d5edd9a4ded1fefc146ea0;p=xogo.git diff --git a/variants/Dobutsu/class.js b/variants/Dobutsu/class.js index 7632a17..d8ceafa 100644 --- a/variants/Dobutsu/class.js +++ b/variants/Dobutsu/class.js @@ -19,7 +19,7 @@ export default class DobutsuRules extends ChessRules { // NOTE: classs change according to playerColor (orientation) const mySide = (this.playerColor == color); return { - 'c': { + 'p': { "class": (mySide ? "" : "rev-") + "chick", both: [{steps: [[pawnShift, 0]], range: 1}] }, @@ -43,7 +43,7 @@ export default class DobutsuRules extends ChessRules { "class": (mySide ? "" : "rev-") + "giraffe", both: [{steps: [[0, 1], [0, -1], [1, 0], [-1, 0]], range: 1}] }, - 'l': { + 'k': { "class": (mySide ? "" : "rev-") + "lion", both: [{ steps: [[-1, 1], [-1, -1], [1, 1], [1, -1], @@ -54,16 +54,15 @@ export default class DobutsuRules extends ChessRules { }; } - isKing(x, y, p) { - if (!p) - p = this.getPiece(x, y); - return (p == 'l'); - } - static get ReserveArray() { return ['p', 'h', 'e', 'g']; } + updateReserve(color, piece, count) { + if (piece != 'k') + super.updateReserve(color, piece, count); + } + constructor(o) { o.options = {crazyhouse: true, taking: true}; super(o); @@ -75,24 +74,29 @@ export default class DobutsuRules extends ChessRules { genRandInitBaseFen() { return { - fen: "gle/1c1/1C1/ELG", + fen: "gke/1p1/1P1/EKG", o: {} }; } get size() { - return {x: 4, y: 4}; + return {x: 4, y: 3}; } getCurrentScore(move_s) { const res = super.getCurrentScore(move_s); if (res != '*') return res; - const oppCol = C.GetOppTurn(this.turn); - const oppLastRank = (oppCol == 'b' ? 3 : 0); - for (let j=0; j < this.size.y; j++) { - if (this.board[oppLastRank][j] == oppCol + 'l') - return (oppCol == 'w' ? "1-0" : "0-1"); + for (let lastRank of [0, 3]) { + const color = (lastRank == 0 ? 'w' : 'b'); + for (let j=0; j < this.size.y; j++) { + if ( + this.board[lastRank][j] == color + 'k' && + !this.underAttack([lastRank, j], [C.GetOppTurn(color)]) + ) { + return (color == 'w' ? "1-0" : "0-1"); + } + } } return "*"; }