@ -1,6 +1,6 @@
using System ;
using System.Collections.Generic ;
using TheGameExtreme.model. effect ;
using TheGameExtreme.model. card ;
using TheGameExtreme.model.@event ;
namespace TheGameExtreme.model.manager
@ -14,9 +14,9 @@ namespace TheGameExtreme.model.manager
}
public override void endTurn ( )
public override bool endTurn ( )
{
// Vérifie que l'utilisateur a bien joué deux cartes
verifyNbCardPlay ( ) ;
pioche ( ) ;
@ -27,18 +27,55 @@ namespace TheGameExtreme.model.manager
}
CurrentHand = playerList [ currentIndexPlayer ] . getCardList ( ) ;
OnPlayerChanged ( new PlayerChangedEventArgs ( CurrentHand ) ) ;
nbCardAtBeginOfTurn = CurrentHand . Count ;
CurrentCardPlayed . Clear ( ) ;
if ( isEndGame ( ) ) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs
{
if ( win )
displayWinner ( ) ;
return true ;
}
return false ;
}
protected void verifyNbCardPlay ( )
{
foreach ( Card cardPlayed in CurrentCardPlayed )
{
if ( cardPlayed . GetType ( ) = = typeof ( ThreeCard ) )
{
if ( ( nbCardAtBeginOfTurn - CurrentHand . Count ) < 3 ) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes
{
testIsEndGame ( ) ;
}
return ;
}
}
if ( ( nbCardAtBeginOfTurn - CurrentHand . Count ) < 2 ) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes
{
Console . WriteLine ( "Le jeu est terminé!\n Bravo vous avez gagné!" ) ;
testIsEndGame ( ) ;
}
}
protected void testIsEndGame ( )
{
if ( isEndGame ( ) )
{
displayWinner ( ) ;
}
else
{
Console . WriteLine ( "Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!" ) ;
throw new Exception ( "Vous n'avez pas joué assez de cart e!") ;
}
}
protected void displayWinner ( )
{
if ( win )
{
EndMessage = "Le jeu est terminé!\n Bravo vous avez gagné!" ;
}
}
protected override void pioche ( )
@ -46,6 +83,10 @@ namespace TheGameExtreme.model.manager
int nbPickedCard = nbMaxCard - CurrentHand . Count ;
for ( int i = 0 ; i < nbPickedCard ; i + + )
{
if ( deck . Count = = 0 )
{
return ;
}
int random = new Random ( ) . Next ( 0 , deck . Count - 1 ) ;
playerList [ currentIndexPlayer ] . pioche ( deck [ random ] ) ;
deck . RemoveAt ( random ) ;
@ -67,7 +108,7 @@ namespace TheGameExtreme.model.manager
{
CurrentHand . ForEach ( card = >
{
if ( card . Value < ListOrderedStacks [ 0 ] . Peek ( ) . Value | | card . Value < ListOrderedStacks [ 1 ] . Peek ( ) . Value | | card . Value > ListOrderedStacks [ 2 ] . Peek ( ) . Value | | card . Value > ListOrderedStacks [ 3 ] . Peek ( ) . Value )
if ( card . Value > ListOrderedStacks [ 0 ] . Peek ( ) . Value | | card . Value > ListOrderedStacks [ 1 ] . Peek ( ) . Value | | card . Value < ListOrderedStacks [ 2 ] . Peek ( ) . Value | | card . Value < ListOrderedStacks [ 3 ] . Peek ( ) . Value )
{
playableCard . Add ( card ) ;
}
@ -76,13 +117,14 @@ namespace TheGameExtreme.model.manager
protected override bool testEndGame ( List < Card > playableCard )
{
if ( playableCard . Count < 3 & & playableCard . Count > = 2 )
if ( playableCard . Count = = 2 )
{
foreach ( Card c in playableCard )
{
if ( c . Equals ( typeof ( ThreeCard ) ) )
{
win = false ;
EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Vous deviez jouer trois cartes à cause de l'effet \"Trois cartes joué\" hors votre jeu ne permet pas d'en jouer autant! Essayez encore!" ;
return true ;
}
}
@ -90,11 +132,13 @@ namespace TheGameExtreme.model.manager
else if ( playableCard . Count < 2 )
{
win = false ;
EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!" ;
return true ;
}
else if ( effectLose ( ) )
{
win = false ;
EndMessage = "Désolé, vous n'avez pas recouvert la tête de mort... Réessayez ;)" ;
return true ;
}
@ -105,7 +149,7 @@ namespace TheGameExtreme.model.manager
{
foreach ( Stack < Card > orderedStack in ListOrderedStacks )
{
if ( orderedStack . Peek ( ) . GetType ( ) = = typeof ( EndGame ) )
if ( orderedStack . Peek ( ) . GetType ( ) = = typeof ( EndGame Card ) )
{
return true ;
}