diff --git a/tarotinator/src/TarotIAs.hs b/tarotinator/src/TarotIAs.hs index 133d6fd..da4d250 100644 --- a/tarotinator/src/TarotIAs.hs +++ b/tarotinator/src/TarotIAs.hs @@ -22,3 +22,36 @@ instance JoueurIA RandomIA where where joué = minimum [carte | carte<-cartes, peutJouer carte cartes pli] finTour self pli = self -- On s'en fiche de l'info. + +playerSort :: Carte -> Carte -> Ordering +playerSort (Valeur(col1,val1) Valeur(col2,val2)) + | col1==col2 = compare val1 val2 + | otherwise = compare col1 col2 +playerSort Valeur(_,_) _ = LT +playerSort _ Valeur(_,_) = GT +playerSort Atout(k) Atout(l) = compare k l +playerSort Atout(_) Excuse = LT +playerSort Excuse Atout(_) = GT +playerSort Excuse Excuse = EQ + +annoncePriseJoueur :: Int -> Maybe Typeprise -> IO () +annoncePriseJoueur i t = putStrLn "Le joueur "++(show i)++" a "++(case t of { + Nothing -> "passé"; + Just Prise -> "pris"; + Just Garde -> "gardé"; + + }) + +data VraiJoueurIA = VraiJeu ([Carte]) +instance JoueurIA VraiJoueurIA where + distrib self cartes pos = do + let jeu = sortBy playerSort cartes + putStrLn "Voici votre jeu : " + for_ jeu (putStrLn . show) + return VraiJeu(jeu) + prise (VraiJeu cartes) prises = do + let nprises = length prises + if nprises==0 + then putStrLn "Vous êtes le premier à parler !" + else do + for_ [1..nprises] (i -> putStrLn "Le joueur "++(show i)++" a ")