projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add Antiking v1
[vchess.git]
/
client
/
src
/
variants
/
Wildebeest.js
diff --git
a/client/src/variants/Wildebeest.js
b/client/src/variants/Wildebeest.js
index
933abbd
..
f4e3b83
100644
(file)
--- a/
client/src/variants/Wildebeest.js
+++ b/
client/src/variants/Wildebeest.js
@@
-3,10
+3,6
@@
import { ArrayFun } from "@/utils/array";
import { sample, randInt } from "@/utils/alea";
export const VariantRules = class WildebeestRules extends ChessRules {
import { sample, randInt } from "@/utils/alea";
export const VariantRules = class WildebeestRules extends ChessRules {
- static getPpath(b) {
- return ([V.CAMEL, V.WILDEBEEST].includes(b[1]) ? "Wildebeest/" : "") + b;
- }
-
static get size() {
return { x: 10, y: 11 };
}
static get size() {
return { x: 10, y: 11 };
}
@@
-52,6
+48,10
@@
export const VariantRules = class WildebeestRules extends ChessRules {
return true;
}
return true;
}
+ getPpath(b) {
+ return ([V.CAMEL, V.WILDEBEEST].includes(b[1]) ? "Wildebeest/" : "") + b;
+ }
+
// There may be 2 enPassant squares (if pawn jump 3 squares)
getEnpassantFen() {
const L = this.epSquares.length;
// There may be 2 enPassant squares (if pawn jump 3 squares)
getEnpassantFen() {
const L = this.epSquares.length;
@@
-117,8
+117,9
@@
export const VariantRules = class WildebeestRules extends ChessRules {
const shiftX = color == "w" ? -1 : 1;
const startRanks = color == "w" ? [sizeX - 2, sizeX - 3] : [1, 2];
const lastRank = color == "w" ? 0 : sizeX - 1;
const shiftX = color == "w" ? -1 : 1;
const startRanks = color == "w" ? [sizeX - 2, sizeX - 3] : [1, 2];
const lastRank = color == "w" ? 0 : sizeX - 1;
- const finalPieces =
- x + shiftX == lastRank ? [V.ROOK, V.KNIGHT, V.BISHOP, V.QUEEN] : [V.PAWN];
+ const finalPieces = x + shiftX == lastRank
+ ? [V.WILDEBEEST, V.QUEEN]
+ : [V.PAWN];
if (this.board[x + shiftX][y] == V.EMPTY) {
// One square forward
if (this.board[x + shiftX][y] == V.EMPTY) {
// One square forward
@@
-195,28
+196,28
@@
export const VariantRules = class WildebeestRules extends ChessRules {
);
}
);
}
- isAttacked(sq, color
s
) {
+ isAttacked(sq, color) {
return (
return (
- super.isAttacked(sq, color
s
) ||
- this.isAttackedByCamel(sq, color
s
) ||
- this.isAttackedByWildebeest(sq, color
s
)
+ super.isAttacked(sq, color) ||
+ this.isAttackedByCamel(sq, color) ||
+ this.isAttackedByWildebeest(sq, color)
);
}
);
}
- isAttackedByCamel(sq, color
s
) {
+ isAttackedByCamel(sq, color) {
return this.isAttackedBySlideNJump(
sq,
return this.isAttackedBySlideNJump(
sq,
- color
s
,
+ color,
V.CAMEL,
V.steps[V.CAMEL],
"oneStep"
);
}
V.CAMEL,
V.steps[V.CAMEL],
"oneStep"
);
}
- isAttackedByWildebeest(sq, color
s
) {
+ isAttackedByWildebeest(sq, color) {
return this.isAttackedBySlideNJump(
sq,
return this.isAttackedBySlideNJump(
sq,
- color
s
,
+ color,
V.WILDEBEEST,
V.steps[V.KNIGHT].concat(V.steps[V.CAMEL]),
"oneStep"
V.WILDEBEEST,
V.steps[V.KNIGHT].concat(V.steps[V.CAMEL]),
"oneStep"
@@
-234,8
+235,8
@@
export const VariantRules = class WildebeestRules extends ChessRules {
static get VALUES() {
return Object.assign(
static get VALUES() {
return Object.assign(
- ChessRules.VALUES,
- { c: 3, w: 7 } //experimental
+ { c: 3, w: 7 }, //experimental
+ ChessRules.VALUES
);
}
);
}
@@
-243,9
+244,20
@@
export const VariantRules = class WildebeestRules extends ChessRules {
return 2;
}
return 2;
}
- static GenRandInitFen() {
+ static GenRandInitFen(randomness) {
+ if (!randomness) randomness = 2;
+ if (randomness == 0)
+ return "rnccwkqbbnr/ppppppppppp/11/11/11/11/11/11/PPPPPPPPPPP/RNBBQKWCCNR w 0 akak -";
+
let pieces = { w: new Array(10), b: new Array(10) };
let pieces = { w: new Array(10), b: new Array(10) };
+ let flags = "";
for (let c of ["w", "b"]) {
for (let c of ["w", "b"]) {
+ if (c == 'b' && randomness == 1) {
+ pieces['b'] = pieces['w'];
+ flags += flags;
+ break;
+ }
+
let positions = ArrayFun.range(11);
// Get random squares for bishops + camels (different colors)
let positions = ArrayFun.range(11);
// Get random squares for bishops + camels (different colors)
@@
-263,7
+275,7
@@
export const VariantRules = class WildebeestRules extends ChessRules {
for (let idx of randIndexes.concat(randIndexes_tmp).sort((a, b) => {
return b - a;
})) {
for (let idx of randIndexes.concat(randIndexes_tmp).sort((a, b) => {
return b - a;
})) {
- //
l
argest indices first
+ //
L
argest indices first
positions.splice(idx, 1);
}
positions.splice(idx, 1);
}
@@
-298,12
+310,13
@@
export const VariantRules = class WildebeestRules extends ChessRules {
pieces[c][bishop2Pos] = "b";
pieces[c][knight2Pos] = "n";
pieces[c][rook2Pos] = "r";
pieces[c][bishop2Pos] = "b";
pieces[c][knight2Pos] = "n";
pieces[c][rook2Pos] = "r";
+ flags += V.CoordToColumn(rook1Pos) + V.CoordToColumn(rook2Pos);
}
return (
pieces["b"].join("") +
"/ppppppppppp/11/11/11/11/11/11/PPPPPPPPPPP/" +
pieces["w"].join("").toUpperCase() +
}
return (
pieces["b"].join("") +
"/ppppppppppp/11/11/11/11/11/11/PPPPPPPPPPP/" +
pieces["w"].join("").toUpperCase() +
- " w 0
1111
-"
+ " w 0
" + flags + "
-"
);
}
};
);
}
};