Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
class ActionSquadro
{
private $plateau;
public function __construct(PlateauSquadro $p)
{
$this->plateau = $p;
}
public function estJouablePiece($x, $y)
{
$piece = $this->plateau->getPiece($x, $y);
if ($piece->getCouleur() === PieceSquadro::VIDE || $piece->getCouleur() === PieceSquadro::NEUTRE) {
return false;
}
[$destX, $destY] = $this->plateau->getCoordDestination($x, $y);
$destination = $this->plateau->getPiece($destX, $destY);
return $destination->getCouleur() === PieceSquadro::VIDE;
}
public function jouePiece($x, $y)
{
if (!$this->estJouablePiece($x, $y)) {
return false;
}
$piece = $this->plateau->getPiece($x, $y);
[$destX, $destY] = $this->plateau->getCoordDestination($x, $y);
// Gestion du saut d'adversaires
$this->gererSautsAdversaires($x, $y, $destX, $destY);
// Mise à jour de la position
$this->plateau->setPiece($piece, $destX, $destY);
$this->plateau->setPiece(PieceSquadro::initVide(), $x, $y);
// Gestion de la fin de l'aller-retour
if ($piece->getCouleur() === PieceSquadro::BLANC && $destY === 6) {
$piece->inverseDirection();
} elseif ($piece->getCouleur() === PieceSquadro::NOIR && $destX === 0) {
$piece->inverseDirection();
}
return true;
}
private function gererSautsAdversaires($x, $y, $destX, $destY)
{
// Implémentation des reculs des adversaires en fonction des règles
}
public function reculePiece($x, $y)
{
$piece = $this->plateau->getPiece($x, $y);
if ($piece->getDirection() === PieceSquadro::EST || $piece->getDirection() === PieceSquadro::OUEST) {
$this->plateau->setPiece($piece, $x, 0);
} else {
$this->plateau->setPiece($piece, 6, $y);
}
}
public function sortPiece($couleur, $rang)
{
if ($couleur === PieceSquadro::BLANC) {
$this->plateau->retireLigneJouable($rang);
} else {
$this->plateau->retireColonneJouable($rang);
}
}
public function remporteVictoire($couleur)
{
$jouables = $couleur === PieceSquadro::BLANC
? $this->plateau->getLignesJouables()
: $this->plateau->getColonnesJouables();
return count($jouables) <= 1;
}
}