Skip to content

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Guillaume committed Nov 23, 2016
1 parent ac1218a commit e422fd2
Show file tree
Hide file tree
Showing 74 changed files with 1,143 additions and 2,272 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
composer.phar
vendor
composer.lock
.idea
.env
28 changes: 17 additions & 11 deletions app/Http/Controllers/JeuxController.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public function myturn() {

public function play($carte_id) {
$joueur = Joueur::getJoueurConnecte();
$salon = $joueur->getSalon();
if (!$salon->is_playing) return;
if ($joueur->possedeCarte($carte_id)) {
//Si verifPrincess est vrai, on ne fait rien, le joueur se fait eliminer
if(!$this->verifPrincess($carte_id, $joueur)) {
Expand All @@ -66,15 +68,17 @@ public function play($carte_id) {
$this->verifHandmaid($carte_id, $joueur);
}
}
$salon->checkManche();
}

public function playCible($carte_id, $joueur_cibleUsername){
//TODO action sur la cible mais sans carte a deviner
//KingPrinceBaronPriest
$carte = Cartes::where('id', $carte_id)->first();
$joueur = Joueur::getJoueurConnecte();
$joueur->endTurn();
$joueur->play($carte_id);
$salon = $joueur->getSalon();
if (!$salon->is_playing) return;
$this->play($carte_id);
$joueur_cible = Joueur::getJoueurByUsername($joueur_cibleUsername);

switch($carte->nom){
Expand All @@ -95,19 +99,21 @@ public function playCible($carte_id, $joueur_cibleUsername){
$joueur->priestEffect($joueur_cible);
break;
}

$salon->checkManche();
}

public function playCibleCarte($carte_id, $joueur_cible, $carte_devine){
$joueur = Joueur::getJoueurConnecte();
if ($joueur->possedeCarte($carte_id)) {
//TODO action sur la cible + devine sa carte
$this->play($carte_id);
$joueur->guardEffect($joueur_cible, $carte_devine);
$msg = $joueur->username . " et " . $joueur_cible;
Action::messageServeur($joueur->getSalon(), $msg);
$this->endTurn();
}
$salon = $joueur->getSalon();
if (!$salon->is_playing) return;
Action::messageDebug($salon, "Dans playCibleCarte");
//TODO action sur la cible + devine sa carte
$this->play($carte_id);
$joueur->guardEffect($joueur_cible, $carte_devine);
$msg = $joueur->username . " et " . $joueur_cible;
Action::messageServeur($joueur->getSalon(), $msg);
Action::messageDebug($salon, "Appel à check manche");
$salon->checkManche();
}

public function chat($msg) {
Expand Down
4 changes: 4 additions & 0 deletions app/Joueur.php
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@ public static function getJoueurConnecte() {
return Joueur::where('username', $username)->firstOrFail();
}

public static function getJoueurByUsername($username) {
return Joueur::where('username', $username)->firstOrFail();
}

public function deleteMain() {
Main::where('joueur_id', $this->id)->delete();
}
Expand Down
98 changes: 52 additions & 46 deletions app/Salon.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,51 +29,22 @@ public function actions(){
*/
public function nextPlayer() {


if ($this->pioche_vide()) {
/**
* La pioche est vide, c'est la fin de la manche
* On récupère le joueur qui possède la carte la plus grande
* On lui ajoute un point
* On démarre une nouvelle manche
*/
Action::messageServeur($this, "Fin de la manche");
Action::messageDebug($this, "La pioche est vide");
$joueur_gagnant = $this->joueur_carte_superieur();
$joueur_gagnant->ajouterPoint();
$this->nouvelle_manche();

} elseif (! $this->auMoinsDeuxJoueursNonElimines()) {
/**
* Il ne reste qu'un joueur non éliminé
* On récupère ce joueur et on lui ajoute un point
* On démarre une nouvelle manche
*/
Action::messageServeur($this, "Fin de la manche");
Action::messageDebug($this, "Il ne reste qu'un joueur");
$joueur_gagnant = $this->dernierJoueurNonElimine();
$joueur_gagnant->ajouterPoint();
$this->nouvelle_manche();
// On passe au prochain joueur
$id_prochain_joueur = $this->id_prochain_joueur;
$prochainJoueur = Joueur::where('salon_id', $this->id)
->where('id', '>', $id_prochain_joueur)
->where('est_elimine', false)
->first();

if ($prochainJoueur) {
$this->id_prochain_joueur = $prochainJoueur->id;
} else {
// On passe au prochain joueur
$id_prochain_joueur = $this->id_prochain_joueur;
$prochainJoueur = Joueur::where('salon_id', $this->id)
->where('id', '>', $id_prochain_joueur)
->where('est_elimine', false)
->first();

if ($prochainJoueur) {
$this->id_prochain_joueur = $prochainJoueur->id;
} else {
Action::messageDebug($this, "Fin du tour, retour au premier joueur");
$this->id_prochain_joueur = 0;
$this->nextPlayer();
}

$this->save();
Action::messageDebug($this, "Fin du tour, retour au premier joueur");
$this->id_prochain_joueur = 0;
$this->nextPlayer();
}


$this->save();
}

/**
Expand Down Expand Up @@ -293,10 +264,10 @@ public function maj() {
$pioche = $this->getPioche();
$defausse = $this->getDefausse();
$this->no_manche = 0;
$this->id_prochain_joueur = 0;
$this->is_playing = false;
CartesDansPile::where('pile_cartes_id', $pioche->id)->delete();
CartesDansPile::where('pile_cartes_id', $defausse->id)->delete();
self::init_pioche($pioche);

}
$this->save();
}
Expand All @@ -313,8 +284,7 @@ public function auMoinsDeuxJoueurs() {
*/
public function auMoinsDeuxJoueursNonElimines() {

$res = Joueur::where('salon_id', $this->id)->where('est_elimine', false)->count() >= 2;
Action::messageDebug($this, "auMoinsDeuxJoueursNonElimines ret " . $res);
$res = (Joueur::where('salon_id', $this->id)->where('est_elimine', false)->count() >= 2);
return $res;
}

Expand Down Expand Up @@ -369,4 +339,40 @@ protected function checkVictoire() {
return false;
}

public function checkManche() {
if ($this->pioche_vide()) {
/**
* La pioche est vide, c'est la fin de la manche
* On récupère le joueur qui possède la carte la plus grande
* On lui ajoute un point
* On démarre une nouvelle manche
*/
Action::messageServeur($this, "Fin de la manche");
Action::messageDebug($this, "La pioche est vide");
$joueur_gagnant = $this->joueur_carte_superieur();
Action::messageDebug($this, "Le joueur aillant la carte sup est " . $joueur_gagnant->username);
$joueur_gagnant->ajouterPoint();
$this->nouvelle_manche();

} elseif (! $this->auMoinsDeuxJoueursNonElimines()) {
/**
* Il ne reste qu'un joueur non éliminé
* On récupère ce joueur et on lui ajoute un point
* On démarre une nouvelle manche
*/
Action::messageServeur($this, "Fin de la manche");
Action::messageDebug($this, "Il ne reste qu'un joueur");
$joueur_gagnant = $this->dernierJoueurNonElimine();
Action::messageDebug($this, "Le dernier joueur est " . $joueur_gagnant->username);
$joueur_gagnant->ajouterPoint();
$this->nouvelle_manche();
}
if (($j = $this->checkVictoire())) {
Action::messageServeur($this, $j->username . " a gagné !");
Action::messageServeur($this, "Veuillez quitter le salon");
$this->is_playing = false;
$this->save();
}
}

}
51 changes: 26 additions & 25 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e422fd2

Please sign in to comment.