li.
Capturing an enemy unit holding the ball both make the piece
disappear and grab the ball.
- li "Capturing" a friendly unit pass the ball to it.
+ li.
+ "Capturing" a friendly unit pass the ball to it, or take the ball
+ from it. In both cases the pieces don't move.
p.
All pieces represent players on a field of some ball game,
so they can move up to three squares only for a better realism.
+p.
+ To balance the advantage of ball possession, the piece holding the ball
+ cannot capture enemy pieces.
+
figure.diagram-container
.diagram.diag12
| fen:1bnrqrnhb/ppppppppp/2h6/9/4a4/5P3/9/PPPPP1PPP/HBNRQRNHB:
li.
Capturar una pieza enemiga con el globo lo roba
mientras lo hace desaparecer.
- li "Capturar" una pieza amiga le pasa la pelota.
+ li.
+ "Capturar" una pieza amistosa pasa o toma la pelota. En ambos casos,
+ las piezas no se mueven.
p.
Todas las piezas representan jugadores en un área de juego de pelota,
entonces solo se mueven tres casillas como máximo para un mejor realismo.
+p.
+ Para compensar la ventaja de la posesión, una pieza que tiene la
+ la pelota no puede capturar piezas opuestas.
+
figure.diagram-container
.diagram.diag12
| fen:1bnrqrnhb/ppppppppp/2h6/9/4a4/5P3/9/PPPPP1PPP/HBNRQRNHB:
li.
Capturer une pièce ennemie possédant le ballon lui vole
tout en la faisant disparaître.
- li "Capturer" une pièce amie lui passe le ballon.
+ li.
+ "Capturer" une pièce amie lui passe le ballon, ou lui prend.
+ Dans les deux cas, les pièces ne bougent pas.
p.
Toutes les pièces représentent des joueurs sur un terrain d'un certain
jeu de ballon, donc elles ne se déplacent que de trois cases au maximum
pour un meilleur réalisme.
+p.
+ Pour compenser l'avantage de possession du ballon, une pièce ayant la
+ balle ne peut pas capturer les pièces adverses.
+
figure.diagram-container
.diagram.diag12
| fen:1bnrqrnhb/ppppppppp/2h6/9/4a4/5P3/9/PPPPP1PPP/HBNRQRNHB:
}
canTake([x1, y1], [x2, y2]) {
- // Capture enemy or pass ball to friendly pieces
+ if (this.getColor(x1, y1) !== this.getColor(x2, y2)) {
+ // The piece holding the ball cannot capture:
+ return (
+ !(Object.keys(V.HAS_BALL_DECODE)
+ .includes(this.board[x1][y1].charAt(1)))
+ );
+ }
+ // Pass: possible only if one of the friendly pieces has the ball
return (
- this.getColor(x1, y1) !== this.getColor(x2, y2) ||
- Object.keys(V.HAS_BALL_DECODE).includes(this.board[x1][y1].charAt(1))
+ Object.keys(V.HAS_BALL_DECODE).includes(this.board[x1][y1].charAt(1)) ||
+ Object.keys(V.HAS_BALL_DECODE).includes(this.board[x2][y2].charAt(1))
);
}
);
}
- // Post-processing: maybe the ball was taken, or a piece + ball
+ // Post-processing: maybe the ball was taken, or a piece + ball,
+ // or maybe a pass (ball <--> piece)
if (mv.vanish.length == 2) {
if (
// Take the ball?
mv.vanish[1].c == 'a' ||
- // Capture a ball-holding piece?
+ // Capture a ball-holding piece? If friendly one, then adjust
Object.keys(V.HAS_BALL_DECODE).includes(mv.vanish[1].p)
) {
mv.appear[0].p = V.HAS_BALL_CODE[mv.appear[0].p];
+ if (mv.vanish[1].c == mv.vanish[0].c) {
+ // "Capturing" self => pass
+ mv.appear[0].x = mv.start.x;
+ mv.appear[0].y = mv.start.y;
+ mv.appear.push(
+ new PiPo({
+ x: mv.end.x,
+ y: mv.end.y,
+ p: V.HAS_BALL_DECODE[mv.vanish[1].p],
+ c: mv.vanish[0].c
+ })
+ );
+ }
} else if (mv.vanish[1].c == mv.vanish[0].c) {
// Pass the ball: the passing unit does not disappear
mv.appear.push(JSON.parse(JSON.stringify(mv.vanish[0])));