module Main where import Control.Monad.State import Card import Skat import Operations import Player import Pile import AI.Stupid import AI.Human import AI.Rulebased main :: IO () main = putStrLn "Hello World" env :: SkatEnv env = SkatEnv piles Nothing Spades playersExamp where piles = distribute allCards envStupid :: SkatEnv envStupid = SkatEnv piles Nothing Spades pls2 where piles = distribute allCards playersExamp :: Players playersExamp = Players (PL $ Stupid Team Hand1) (PL $ Stupid Team Hand2) (PL $ mkAIEnv Single Hand3 10) pls2 :: Players pls2 = Players (PL $ Stupid Team Hand1) (PL $ Stupid Team Hand2) (PL $ Stupid Team Hand3) shuffledEnv :: IO SkatEnv shuffledEnv = do cards <- shuffleCards return $ SkatEnv (distribute cards) Nothing Spades playersExamp env2 :: SkatEnv env2 = SkatEnv piles Nothing Spades playersExamp where hand1 = [Card Seven Clubs, Card King Clubs, Card Ace Clubs, Card Queen Diamonds] hand2 = [Card Seven Hearts, Card King Hearts, Card Ace Hearts, Card Queen Spades] hand3 = [Card Seven Spades, Card King Spades, Card Ace Spades, Card Queen Clubs] h1 = map (putAt Hand1) hand1 h2 = map (putAt Hand2) hand2 h3 = map (putAt Hand3) hand3 piles = Piles (h1 ++ h2 ++ h3) [] [] testAI :: Int -> IO () testAI n = do let acs = repeat (shuffledEnv >>= evalStateT (turnGeneric playOpen 10 Hand1) ) vals <- sequence (take n acs) putStrLn $ "average won points " ++ show (fromIntegral (sum (map fst vals)) / fromIntegral n)