projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Alice rules (en passant)
[vchess.git]
/
client
/
src
/
base_rules.js
diff --git
a/client/src/base_rules.js
b/client/src/base_rules.js
index
167be91
..
ec949fc
100644
(file)
--- a/
client/src/base_rules.js
+++ b/
client/src/base_rules.js
@@
-80,6
+80,11
@@
export const ChessRules = class ChessRules {
return V.ShowMoves;
}
return V.ShowMoves;
}
+ // Used for Monochrome variant (TODO: harmonize: !canFlip ==> showFirstTurn)
+ get showFirstTurn() {
+ return false;
+ }
+
// Some variants always show the same orientation
static get CanFlip() {
return true;
// Some variants always show the same orientation
static get CanFlip() {
return true;
@@
-263,7
+268,8
@@
export const ChessRules = class ChessRules {
}
// On which squares is color under check ? (for interface)
}
// On which squares is color under check ? (for interface)
- getCheckSquares(color) {
+ getCheckSquares() {
+ const color = this.turn;
return (
this.underCheck(color)
// kingPos must be duplicated, because it may change:
return (
this.underCheck(color)
// kingPos must be duplicated, because it may change:
@@
-468,7
+474,7
@@
export const ChessRules = class ChessRules {
return;
const fenParsed = V.ParseFen(fen);
this.board = V.GetBoard(fenParsed.position);
return;
const fenParsed = V.ParseFen(fen);
this.board = V.GetBoard(fenParsed.position);
- this.turn = fenParsed.turn
[0]; //[0] to work with MarseilleRules
+ this.turn = fenParsed.turn
;
this.movesCount = parseInt(fenParsed.movesCount);
this.setOtherVariables(fen);
}
this.movesCount = parseInt(fenParsed.movesCount);
this.setOtherVariables(fen);
}
@@
-703,7
+709,7
@@
export const ChessRules = class ChessRules {
// Consider all potential promotions:
addPawnMoves([x1, y1], [x2, y2], moves, promotions) {
let finalPieces = [V.PAWN];
// Consider all potential promotions:
addPawnMoves([x1, y1], [x2, y2], moves, promotions) {
let finalPieces = [V.PAWN];
- const color = this.turn;
+ const color = this.turn;
//this.getColor(x1, y1);
const lastRank = (color == "w" ? 0 : V.size.x - 1);
if (x2 == lastRank) {
// promotions arg: special override for Hiddenqueen variant
const lastRank = (color == "w" ? 0 : V.size.x - 1);
if (x2 == lastRank) {
// promotions arg: special override for Hiddenqueen variant
@@
-720,7
+726,7
@@
export const ChessRules = class ChessRules {
// What are the pawn moves from square x,y ?
getPotentialPawnMoves([x, y], promotions) {
// What are the pawn moves from square x,y ?
getPotentialPawnMoves([x, y], promotions) {
- const color = this.turn;
+ const color = this.turn;
//this.getColor(x, y);
const [sizeX, sizeY] = [V.size.x, V.size.y];
const pawnShiftX = V.PawnSpecs.directions[color];
const firstRank = (color == "w" ? sizeX - 1 : 0);
const [sizeX, sizeY] = [V.size.x, V.size.y];
const pawnShiftX = V.PawnSpecs.directions[color];
const firstRank = (color == "w" ? sizeX - 1 : 0);
@@
-801,7
+807,6
@@
export const ChessRules = class ChessRules {
this.getEnpassantCaptures([x, y], pawnShiftX)
);
}
this.getEnpassantCaptures([x, y], pawnShiftX)
);
}
-
return pMoves;
}
return pMoves;
}
@@
-989,7
+994,7
@@
export const ChessRules = class ChessRules {
const color = this.turn;
for (let i = 0; i < V.size.x; i++) {
for (let j = 0; j < V.size.y; j++) {
const color = this.turn;
for (let i = 0; i < V.size.x; i++) {
for (let j = 0; j < V.size.y; j++) {
- if (this.getColor(i, j) == color) {
+ if (this.
board[i][j] != V.EMPTY && this.
getColor(i, j) == color) {
const moves = this.getPotentialMovesFrom([i, j]);
if (moves.length > 0) {
for (let k = 0; k < moves.length; k++) {
const moves = this.getPotentialMovesFrom([i, j]);
if (moves.length > 0) {
for (let k = 0; k < moves.length; k++) {
@@
-1246,10
+1251,11
@@
export const ChessRules = class ChessRules {
return 3;
}
return 3;
}
- getComputerMove() {
+ // 'movesList' arg for some variants to provide a custom list
+ getComputerMove(movesList) {
const maxeval = V.INFINITY;
const color = this.turn;
const maxeval = V.INFINITY;
const color = this.turn;
- let moves1 = this.getAllValidMoves();
+ let moves1 =
movesList ||
this.getAllValidMoves();
if (moves1.length == 0)
// TODO: this situation should not happen
if (moves1.length == 0)
// TODO: this situation should not happen