// VISUAL UTILS
getPieceWidth(rwidth) {
- return (rwidth / this.size.y);
+ return (rwidth / Math.max(this.size.x, this.size.y));
}
getReserveSquareSize(rwidth, nbR) {
y = (this.playerColor == i ? y = r.height + 5 : - 5 - rsqSize);
}
else {
- const sqSize = r.width / this.size.y;
+ const sqSize = r.width / Math.max(this.size.x, this.size.y);
const flipped = this.flippedBoard;
- x = (flipped ? this.size.y - 1 - j : j) * sqSize;
+ x = (flipped ? this.size.y - 1 - j : j) * sqSize +
+ Math.abs(this.size.x - this.size.y) * sqSize / 2;
y = (flipped ? this.size.x - 1 - i : i) * sqSize;
}
return [r.x + x, r.y + y];
if (this.hasCastle)
this.updateCastleFlags(move);
if (this.options["crazyhouse"]) {
- move.vanish.forEach(v => {
- const square = C.CoordsToSquare({x: v.x, y: v.y});
- if (this.ispawn[square])
- delete this.ispawn[square];
- });
if (move.appear.length > 0 && move.vanish.length > 0) {
// Assumption: something is moving
const initSquare = C.CoordsToSquare(move.start);
delete this.ispawn[destSquare];
}
}
+ move.vanish.forEach(v => {
+ const square = C.CoordsToSquare({x: v.x, y: v.y});
+ if (this.ispawn[square])
+ delete this.ispawn[square];
+ });
}
const minSize = Math.min(move.appear.length, move.vanish.length);
if (
// 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}]
},
"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],
};
}
- 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);
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 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')
+ if (this.board[oppLastRank][j] == oppCol + 'k')
return (oppCol == 'w' ? "1-0" : "0-1");
}
return "*";