X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=variants%2FAmbiguous%2Fclass.js;h=6a83374388749412854d0205a99696d09b9a6164;hb=1080bc93379cd270e09f7d125e2cb95bda51f95f;hp=58458b6a52b80206c01b30d582fc9176b7f6c5c7;hpb=65cf1690c6119c949e2ea8feba8835b6e90b79a2;p=xogo.git diff --git a/variants/Ambiguous/class.js b/variants/Ambiguous/class.js index 58458b6..6a83374 100644 --- a/variants/Ambiguous/class.js +++ b/variants/Ambiguous/class.js @@ -1,5 +1,5 @@ import ChessRules from "/base_rules.js"; -import GiveawayRules from "/variants/Giveaway/class.js"; +import {FenUtil} from "/utils/setupPieces.js"; export default class AmbiguousRules extends ChessRules { @@ -22,10 +22,19 @@ export default class AmbiguousRules extends ChessRules { this.subTurn = 1; } - genRandInitFen(seed) { - const options = Object.assign({mode: "suicide"}, this.options); - const gr = new GiveawayRules({options: options, genFenOnly: true}); - return gr.genRandInitFen(seed); + genRandInitBaseFen() { + const s = FenUtil.setupPieces( + ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'], + { + randomness: this.options["randomness"], + diffCol: ['b'] + } + ); + return { + fen: s.b.join("") + "/pppppppp/8/8/8/8/PPPPPPPP/" + + s.w.join("").toUpperCase(), + o: {} + }; } canStepOver(x, y) { @@ -57,15 +66,17 @@ export default class AmbiguousRules extends ChessRules { .map(m => { if (m.vanish.length == 1) m.appear[0].p = V.GOAL; - else + else { m.appear[0].p = V.TARGET_CODE[m.vanish[1].p]; + m.appear[0].c = m.vanish[1].c; + } m.vanish.shift(); return m; }) ); } // At subTurn == 1, play a targeted move for the opponent. - // Search for target (we could also have it in a stack...) + // Search for target: let target = {x: -1, y: -1}; outerLoop: for (let i = 0; i < this.size.x; i++) { for (let j = 0; j < this.size.y; j++) { @@ -122,14 +133,14 @@ export default class AmbiguousRules extends ChessRules { pieces(color, x, y) { const targets = { - 's': {"class": "target-pawn", moves: []}, - 'u': {"class": "target-rook", moves: []}, - 'o': {"class": "target-knight", moves: []}, - 'c': {"class": "target-bishop", moves: []}, - 't': {"class": "target-queen", moves: []}, - 'l': {"class": "target-king", moves: []} + 's': {"class": "target-pawn"}, + 'u': {"class": "target-rook"}, + 'o': {"class": "target-knight"}, + 'c': {"class": "target-bishop"}, + 't': {"class": "target-queen"}, + 'l': {"class": "target-king"} }; - return Object.assign({ 'g': {"class": "target", moves: []} }, + return Object.assign({ 'g': {"class": "target"} }, targets, super.pieces(color, x, y)); } @@ -142,22 +153,23 @@ export default class AmbiguousRules extends ChessRules { return moves; } - isKing(symbol) { - return ['k', 'l'].includes(symbol); + isKing(x, y, p) { + if (!p) + p = this.getPiece(x, y); + return ['k', 'l'].includes(p); } getCurrentScore() { // This function is only called at subTurn 1 const color = C.GetOppCol(this.turn); - const kingPos = this.searchKingPos(color); - if (kingPos[0] < 0) + if (this.searchKingPos(color).length == 0) return (color == 'w' ? "0-1" : "1-0"); return "*"; } postPlay(move) { const color = this.turn; - if (this.subTurn == 2 || this.searchKingPos(color)[0] < 0) { + if (this.subTurn == 2 || this.searchKingPos(color).length == 0) { this.turn = C.GetOppCol(color); this.movesCount++; }