projects
/
xogo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Finish refactoring base_rules.js (for now)
[xogo.git]
/
base_rules.js
diff --git
a/base_rules.js
b/base_rules.js
index
9eb18fc
..
4805f17
100644
(file)
--- a/
base_rules.js
+++ b/
base_rules.js
@@
-118,13
+118,13
@@
export default class ChessRules {
////////////////////
// COORDINATES UTILS
////////////////////
// COORDINATES UTILS
- //
a3 --> {x:10, y:3
}
+ //
3a --> {x:3, y:10
}
static SquareToCoords(sq) {
return ArrayFun.toObject(["x", "y"],
[0, 1].map(i => parseInt(sq[i], 36)));
}
static SquareToCoords(sq) {
return ArrayFun.toObject(["x", "y"],
[0, 1].map(i => parseInt(sq[i], 36)));
}
- // {x:1
, y:12} --> 1
c
+ // {x:1
1, y:12} --> b
c
static CoordsToSquare(cd) {
return Object.values(cd).map(c => c.toString(36)).join("");
}
static CoordsToSquare(cd) {
return Object.values(cd).map(c => c.toString(36)).join("");
}
@@
-162,12
+162,12
@@
export default class ChessRules {
// Turn "wb" into "B" (for FEN)
board2fen(b) {
// Turn "wb" into "B" (for FEN)
board2fen(b) {
- return
b[0] == "w" ? b[1].toUpperCase() : b[1]
;
+ return
(b[0] == "w" ? b[1].toUpperCase() : b[1])
;
}
// Turn "p" into "bp" (for board)
fen2board(f) {
}
// Turn "p" into "bp" (for board)
fen2board(f) {
- return
f.charCodeAt(0) <= 90 ? "w" + f.toLowerCase() : "b" + f
;
+ return
(f.charCodeAt(0) <= 90 ? "w" + f.toLowerCase() : "b" + f)
;
}
// Setup the initial random-or-not (asymmetric-or-not) position
}
// Setup the initial random-or-not (asymmetric-or-not) position
@@
-672,7
+672,7
@@
export default class ChessRules {
}
else
this.r_pieces = { 'w': {}, 'b': {} };
}
else
this.r_pieces = { 'w': {}, 'b': {} };
- let chessboard =
+ let chessboard =
document.getElementById(this.containerId).querySelector(".chessboard");
if (!r)
r = chessboard.getBoundingClientRect();
document.getElementById(this.containerId).querySelector(".chessboard");
if (!r)
r = chessboard.getBoundingClientRect();
@@
-1065,13
+1065,7
@@
export default class ChessRules {
// Am I allowed to move thing at square x,y ?
canIplay(x, y) {
// Am I allowed to move thing at square x,y ?
canIplay(x, y) {
- return (
- this.playerColor == this.turn &&
- (
- (typeof x == "number" && this.getColor(x, y) == this.turn) ||
- (typeof x == "string" && x == this.turn) //reserve
- )
- );
+ return (this.playerColor == this.turn && this.getColor(x, y) == this.turn);
}
////////////////////////
}
////////////////////////
@@
-1342,13
+1336,11
@@
export default class ChessRules {
}
}
if (!this.options["rifle"])
}
}
if (!this.options["rifle"])
- m.appear.pop(); //nothin appears
+ m.appear.pop(); //nothin
g
appears
}
});
}
}
});
}
-// TODO: pawnfall + Cannibal issues
-
pawnPostProcess(moves, color, oppCol) {
let moreMoves = [];
const lastRank = (color == "w" ? 0 : this.size.x - 1);
pawnPostProcess(moves, color, oppCol) {
let moreMoves = [];
const lastRank = (color == "w" ? 0 : this.size.x - 1);
@@
-1403,7
+1395,6
@@
export default class ChessRules {
m.appear[0].x == m.start.x &&
m.appear[0].y == m.start.y
) {
m.appear[0].x == m.start.x &&
m.appear[0].y == m.start.y
) {
- const promotionPiece0 = this.pawnSpecs.promotions[0];
m.appear[0].p = this.pawnPromotions[0];
for (let i=1; i<this.pawnPromotions.length; i++) {
let newMv = JSON.parse(JSON.stringify(m));
m.appear[0].p = this.pawnPromotions[0];
for (let i=1; i<this.pawnPromotions.length; i++) {
let newMv = JSON.parse(JSON.stringify(m));
@@
-1939,11
+1930,6
@@
export default class ChessRules {
});
}
});
}
-
-// TODO: generique start/end board or reserve
-
-
-
prePlay(move) {
if (
this.hasCastle &&
prePlay(move) {
if (
this.hasCastle &&
@@
-1978,31
+1964,31
@@
export default class ChessRules {
}
}
}
}
}
}
-
- // TODO: robustify this by adding fields
- // "captures" (capts?) and "births" (e.g...) to Move
- // --> store only indices in appear/vanish ?
const minSize = Math.min(move.appear.length, move.vanish.length);
const minSize = Math.min(move.appear.length, move.vanish.length);
- if (this.hasReserve && !move.pawnfall) {
+ if (
+ this.hasReserve &&
+ // Warning; atomic pawn removal isn't a capture
+ (!this.options["atomic"] || !this.rempawn || this.movesCount >= 1)
+ ) {
const color = this.turn;
for (let i=minSize; i<move.appear.length; i++) {
// Something appears = dropped on board (some exceptions, Chakart...)
const color = this.turn;
for (let i=minSize; i<move.appear.length; i++) {
// Something appears = dropped on board (some exceptions, Chakart...)
- const piece = move.appear[i].p;
- this.updateReserve(color, piece, this.reserve[color][piece] - 1);
+ if (move.appear[i].c == color) {
+ const piece = move.appear[i].p;
+ this.updateReserve(color, piece, this.reserve[color][piece] - 1);
+ }
}
for (let i=minSize; i<move.vanish.length; i++) {
// Something vanish: add to reserve except if recycle & opponent
}
for (let i=minSize; i<move.vanish.length; i++) {
// Something vanish: add to reserve except if recycle & opponent
- const piece = move.vanish[i].p;
- if (this.options["crazyhouse"] || move.vanish[i].c == color)
+ if (
+ this.options["crazyhouse"] ||
+ (this.options["recycle"] && move.vanish[i].c == color)
+ ) {
+ const piece = move.vanish[i].p;
this.updateReserve(color, piece, this.reserve[color][piece] + 1);
this.updateReserve(color, piece, this.reserve[color][piece] + 1);
+ }
}
}
}
}
- move.captures.forEach(capt => {
- // TODO
- });
- move.births.forEach(bth => {
- // TODO
- });
}
play(move) {
}
play(move) {