7b2e77e29389703f6aa5cddbd4e16c6e7e9e1b08
1 import { ChessRules
} from "@/base_rules";
3 export class ChakartRules
extends ChessRules
{
4 // NOTE: getBasicMove, ajouter les bonus à vanish array
5 // + déterminer leur effet (si cavalier) ou case (si banane ou bombe)
6 // (L'effet doit être caché au joueur : devrait être OK)
8 // Saut possible par dessus bonus ou champis mais pas bananes ou bombes
10 // FEN : immobilized (pas flag), castle flags + flags peach (power used?)
11 // "pièces" supplémentaires : bananes, bombes, champis, bonus --> + couleur ?
12 // (Semble mieux sans couleur => couleur spéciale indiquant que c'est pas jouable)
13 // (Attention: pas jouables cf. getPotentialMoves...)
15 setOtherVariables(fen
) {
16 super.setOtherVariables(fen
);
20 getPotentialMovesFrom([x
, y
]) {
21 // TODO: bananes et bombes limitent les déplacements (agissent comme un mur "capturable")
22 // bananes jaunes et rouges ?! (agissant sur une seule couleur ?) --> mauvaise idée.
23 if (this.subTurn
== 2) {
24 // TODO: coup compatible avec firstMove
28 getPotentialPawnMoves(sq
) {
30 // laisse sur sa case de départ un champi turbo permettant à Peach d'aller
31 // une case plus loin, et aux pièces arrivant sur cette case de sauter par
32 // dessus une pièce immédiatement adjacente (en atterissant juste derrière).
35 // Coups en 2 temps (si pose)
36 getPotentialRookMoves(sq
) {
38 // pose une banane (optionnel) sur une case adjacente (diagonale) à celle d'arrivée
39 // Si une pièce arrive sur la peau de banane, alors elle effectue un déplacement
40 // aléatoire d'une (2?) case (vertical ou horizontal) depuis sa position finale.
43 // Coups en 2 temps (si pose)
44 getPotentialBishopMoves([x
, y
]) {
46 // pose une bombe (optionnel) sur une case orthogonalement adjacente à la case d'arrivée
47 // Si une pièce arrive sur une bombe, alors elle effectue un déplacement diagonal
48 // aléatoire d'une (2?) case depuis sa position finale (juste une case si impossible).
51 getPotentialKnightMoves([x
, y
]) {
53 // laisse sur sa case de départ un bonus aléatoire
54 // (NOTE: certains bonus pourraient ne pas être applicables ==> pion bloqué par exemple)
55 // - i) roi boo(*E*) : échange avec n'importe quelle pièce (choix du joueur, type et/ou couleur différents)
56 // à condition que la position résultante ne soit pas un auto-échec
57 // - i*) koopa(*B*) : ramène sur la case initiale
58 // - ii) toadette(*R*) : permet de poser une pièce capturée sur le plateau
59 // (n'importe où sauf 8eme rangée pour les pions)
60 // - ii*) chomp(*W*) : mange la pièce ; si c'est Peach, c'est perdu
61 // - iii) daisy(*T*) : permet de rejouer un coup avec la même pièce --> cumulable si ensuite coup sur bonus Daisy.
62 // - iii*) bowser(*M*) : immobilise la pièce (marquée jaune/rouge), qui ne pourra pas jouer au tour suivant
63 // - iv) luigi(*L*) : fait changer de camp une pièce adverse (aléatoire ?) (sauf le roi)
64 // - iv*) waluigi(*D*) : fait changer de camp une de nos pièces (aléatoire ?) (sauf le roi)
65 // --> i, ii, iii en deux temps (subTurn 1 & 2)
66 // iii* : indication dans FEN (immobilized)
69 getPotentialQueenMoves(sq
) {
71 // pouvoir "casquette ailée" (à chaque coup?) : peut sauter par dessus n'importe quelle pièce (une seule), sans la capturer.
74 getPotentialKingMoves(sq
) {
76 // Carapace rouge (disons ^^) jouable une seule fois dans la partie,
77 // au lieu de se déplacer. Capture un ennemi au choix parmi les plus proches,
78 // à condition qu'ils soient visible (suivant les directions de déplacement d'une dame).
79 // Profite des accélérateurs posés par les pions (+ 1 case : obligatoire).
83 // TODO: subTurn passe à 2 si potentiellement pose (tour, fou) ou si choix (reconnaître i (ok), ii (ok) et iii (si coup normal + pas immobilisé) ?)
84 // voire +2 si plusieurs daisy...
88 // TODO: reconnaissance inverse si subTurn == 1 --> juste impossible ==> marquer pendant play (comme DoubleMove1 : move.turn = ...)
91 //atLeastOneMove() should be OK
94 //TODO: But = capturer la princesse adverse. Variante : but = la princesse arrive de l'autre côté de l'échiquier.
95 //==> On peut mixer ces deux conditions : arriver au bout du plateau ou capturer la princesse adverse.
100 //Si une pièce pose quelque chose sur une case ça remplace ce qui y était déjà.
101 //Pas de condition de pat, puisque l'objectif est la capture de la reine :)