Commit | Line | Data |
---|---|---|
6c7cbfed BA |
1 | import { ChessRules } from "@/base_rules"; |
2 | ||
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) | |
7 | // | |
8 | // Saut possible par dessus bonus ou champis mais pas bananes ou bombes | |
9 | ||
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...) | |
14 | ||
15 | setOtherVariables(fen) { | |
16 | super.setOtherVariables(fen); | |
17 | this.subTurn = 1; | |
18 | } | |
19 | ||
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 | |
25 | } | |
26 | } | |
27 | ||
28 | getPotentialPawnMoves(sq) { | |
29 | //Toad: pion | |
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). | |
33 | } | |
34 | ||
35 | // Coups en 2 temps (si pose) | |
36 | getPotentialRookMoves(sq) { | |
37 | //Donkey : tour | |
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. | |
41 | } | |
42 | ||
43 | // Coups en 2 temps (si pose) | |
44 | getPotentialBishopMoves([x, y]) { | |
45 | //Wario: fou | |
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). | |
49 | } | |
50 | ||
51 | getPotentialKnightMoves([x, y]) { | |
52 | //Yoshi: cavalier | |
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) | |
67 | } | |
68 | ||
69 | getPotentialQueenMoves(sq) { | |
70 | //Mario: dame | |
71 | // pouvoir "casquette ailée" (à chaque coup?) : peut sauter par dessus n'importe quelle pièce (une seule), sans la capturer. | |
72 | } | |
73 | ||
74 | getPotentialKingMoves(sq) { | |
75 | //Peach: roi | |
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). | |
80 | } | |
81 | ||
82 | play(move) { | |
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... | |
85 | } | |
86 | ||
87 | undo(move) { | |
88 | // TODO: reconnaissance inverse si subTurn == 1 --> juste impossible ==> marquer pendant play (comme DoubleMove1 : move.turn = ...) | |
89 | } | |
90 | ||
91 | //atLeastOneMove() should be OK | |
92 | ||
93 | getCurrentScore() { | |
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. | |
96 | return '*'; | |
97 | } | |
98 | ||
99 | //Détails : | |
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 :) | |
102 | }; |