Skip to content

Commit

Permalink
Regles en constructions. Guard OK
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Hajek committed Nov 23, 2016
1 parent 6cbbafe commit 02c4376
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 22 deletions.
49 changes: 41 additions & 8 deletions app/Http/Controllers/JeuxController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Illuminate\Http\Request;
use App\Joueur;
use App\Salon;
use App\Main;
use Illuminate\Support\Facades\Auth;


Expand Down Expand Up @@ -58,23 +59,53 @@ public function myturn() {
public function play($carte_id) {
$joueur = Joueur::getJoueurConnecte();
if ($joueur->possedeCarte($carte_id)) {
if(!$this->verifPrincess($carte_id)) {
//Si verifPrincess est vrai, on ne fait rien, le joueur se fait eliminer
if(!$this->verifPrincess($carte_id, $joueur)) {
$joueur->endTurn();
$joueur->play($carte_id);
$this->verifHandmaid($carte_id);
$this->verifHandmaid($carte_id, $joueur);
}
}
}

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

switch($carte->nom){
case "King":
$joueur->kingEffect($joueur_cible->id);
break;
case "Prince":
//Qu'une carte dans la main au moment là normalement
$mainCible = Main::where('joueur_id', $joueur_cible->id)->firstOrFail();
if(!$this->verifPrincess($mainCible->carte_id, $joueur_cible)){
$joueur_cible->princeEffect();
}
break;
case "Baron":
$joueur->baronEffect($joueur_cible->id);
break;
case "Priest":
$joueur->priestEffect($joueur_cible);
break;
}

}

public function playCibleCarte($carte_id, $joueur_cible, $carte_devine){
//TODO action sur la cible + devine sa carte
$this->play($carte_id);

$joueur = Joueur::getJoueurConnecte();
$joueur->guardEffect($joueur_cible, $carte_devine);
$msg = $joueur->username . " et " . $joueur_cible;
Action::messageServeur($joueur->getSalon(), $msg);
}

public function chat($msg) {
Expand Down Expand Up @@ -112,19 +143,21 @@ public function clearAllSalons() {


/***************VERIFS REGLES*****************/
private function verifPrincess($carte_id){
private function verifPrincess($carte_id, $joueur){
$carte = Cartes::where('id', $carte_id)->firstOrFail();
if($carte->nom == 'Princess'){
Joueur::elimine();
$msg = $joueur->username . " a été éliminé car il a défausser la princesse";
Action::messageServeur($joueur->getSalon(), $msg);
$joueur->elimine();
return true;
}
return false;
}

private function verifHandmaid($carte_id){
private function verifHandmaid($carte_id, $joueur){
$carte = Cartes::where('id', $carte_id)->firstOrFail();
if($carte->nom == "Handmaid"){
Joueur::handmaidJoue();
$joueur->handmaidJoue();
}
}
}
4 changes: 2 additions & 2 deletions app/Http/Controllers/SalonsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public function __construct()
$this->middleware('auth');
}

public function show(Request $req, $n){
$joueur = Joueur::getJoueurByUsername($req->session()->get("username"));
public function show($n){
$joueur = Joueur::getJoueurConnecte();

if ($joueur->dansAucunSalon() ) {
$joueur->setSalon($n);
Expand Down
90 changes: 78 additions & 12 deletions app/Joueur.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,11 @@ public function play($carte_id) {
* Fonction checkant si le joueur joue un handmaid
* et lui met une protectection si oui
*/
public static function handmaidJoue(){
$joueur = Joueur::getJoueurByUsername(Auth::user()->name);
$joueur->est_protege = true;
$joueur->save();
$msg = $joueur->username . " est immunisé pendant un tour";
Action::messageServeur($joueur->getSalon(), $msg);
public function handmaidJoue(){
$this->est_protege = true;
$this->save();
$msg = $this->username . " est immunisé pendant un tour";
Action::messageServeur($this->getSalon(), $msg);
}

public function getMain() {
Expand Down Expand Up @@ -154,8 +153,7 @@ private function deleteCard($carte_id){
]);
}

public static function getJoueurByUsername() {
$username = Auth::user()->name;
public static function getJoueurByUsername($username) {
if(empty(Joueur::where('username', $username)->first())){
self::creerJoueur($username);
}
Expand Down Expand Up @@ -188,8 +186,8 @@ public function delete() {
Joueur::where('id', $this->id)->delete();
}

public static function elimine(){
$joueur = self::getJoueurByUsername();
public function elimine(){
$joueur = self::getJoueurConnecte();
$joueur->est_elimine = true;
$joueur->save();
//On delete toute ses cartes
Expand All @@ -200,8 +198,6 @@ public static function elimine(){
}

$salon = $joueur->getSalon();
$msg = $joueur->username . " est éliminé, il a défausser la carte Princess";
Action::messageServeur($salon, $msg);
//TODO VERIFIER SIL NE RESTE QU'UN JOUEUR DU COUP PARTIE TERMINEE
// TODO SINON ON FAIT UN NEXTTURN
}
Expand All @@ -214,4 +210,74 @@ public static function getJoueurConnecte() {
return Joueur::getJoueurByUsername(Auth::user()->name);
}

public function kingEffect($id_joueur_cible){
//TODO MESSAGE
//Normalement ils n'ont qu'une carte chacun au moment là
$mainAdverse = Main::where('joueur_id', $id_joueur_cible)->firstOrFail();
$main = Main::where('joueur_id', $this->id)->firstOrFail();
Main::ajouterCarte($id_joueur_cible, $main->carte_id);
Main::ajouterCarte($this->id, $mainAdverse->carte_id);
Main::supprimerCarte($id_joueur_cible, $mainAdverse->carte_id);
Main::supprimerCarte($this->id, $main->carte_id);
$msg = "Echange de cartes car king joué";
Action::messageServeur($this->getSalon(), $msg);
}

public function princeEffect(){
// TODO MESSAGE
$main = Main::where('joueur_id', $this->id)->firstOrFail();
$this->deleteCard($main->carte_id);
$this->piocherCarte();
$msg = "Defausse puis repioche suite a prince joué";
Action::messageServeur($this->getSalon(), $msg);
}

public function baronEffect($id_joueur_cible){
// TODO MESSAGE
$main = Main::where('joueur_id', $this->id)->firstOrFail();
$mainAdverse = Main::where('joueur_id', $id_joueur_cible)->firstOrFail();
$carte = Cartes::where('id', $main->carte_id)->firstOrFail();
$carteAdverse = Cartes::where('id', $mainAdverse->carte_id)->firstOrFail();
$joueurCible = Joueur::where('id', $id_joueur_cible)->firstOrFail();
if($carte->value > $carteAdverse->value){
//joueur_cible qui se fait eliminé
$joueurCible->elimine();
$msg = $joueurCible->username . " a été éliminé cause comparaison Baron avec " . $this->username;
Action::messageServeur($this->getSalon(), $msg);

}elseif($carte->value < $carteAdverse->value){
//joueur qui se fait eliminé
$this->elimine();
$msg = $this->username . " a été éliminé cause comparaison Baron avec " .$joueurCible->username;
Action::messageServeur($this->getSalon(), $msg);

}else{
//=
$msg = $this->username . " et " . $joueurCible->username . " avaient des cartes de même valeur(comp Baron)";
Action::messageServeur($this->getSalon(), $msg);
}

}

public function priestEffect($joueurCible){

}

public function guardEffect($joueurCibleUsername, $carte_devine){
$joueurCible = self::getJoueurByUsername($joueurCibleUsername);
$mainAdverse = Main::where('joueur_id', $joueurCible->id)->firstOrFail();
$carteAdverse = Cartes::where('id', $mainAdverse->carte_id)->firstOrFail();
//DEBUG
$msg1 = $carteAdverse->nom . " == " . $carte_devine;
Action::messageServeur($this->getSalon(), $msg1);
if($carteAdverse->nom == $carte_devine){
$joueurCible->elimine();
$msg = $joueurCible->username . " a été éliminé car guard et trouvé bonne carte";
Action::messageServeur($this->getSalon(), $msg);
}else{
$msg = "guard joué mais mauvaise carte proposée donc sans effets";
Action::messageServeur($this->getSalon(), $msg);
}
}

}

0 comments on commit 02c4376

Please sign in to comment.