add testing card distribution utils

This commit is contained in:
2019-09-15 23:26:03 +02:00
parent 255971b2f5
commit b94584aee4
2 changed files with 25 additions and 3 deletions
+4 -1
View File
@@ -6,7 +6,7 @@ module Skat.Card where
import Data.List import Data.List
import Data.Aeson import Data.Aeson
import System.Random (newStdGen) import System.Random (newStdGen, StdGen)
import Control.DeepSeq import Control.DeepSeq
import Skat.Utils import Skat.Utils
@@ -123,6 +123,9 @@ shuffleCards = do
gen <- newStdGen gen <- newStdGen
return $ shuffle gen allCards return $ shuffle gen allCards
shuffleCardsWithGen :: StdGen -> [Card]
shuffleCardsWithGen gen = shuffle gen allCards
-- TESTING VARS -- TESTING VARS
c1 :: Card c1 :: Card
+21 -2
View File
@@ -3,6 +3,7 @@ module Skat.Matches (
) where ) where
import Control.Monad.State import Control.Monad.State
import System.Random (mkStdGen)
import Skat import Skat
import Skat.Operations import Skat.Operations
@@ -14,12 +15,30 @@ import Skat.AI.Rulebased
import Skat.AI.Online import Skat.AI.Online
import Skat.AI.Stupid import Skat.AI.Stupid
-- | predefined card distribution for testing purposes
cardDistr :: Piles
cardDistr = Piles hands [] (map (putAt SkatP) skt)
where hand3 = [Card Ace Spades, Card Jack Diamonds, Card Jack Clubs, Card King Spades,
Card Nine Spades, Card Ace Diamonds, Card Queen Diamonds, Card Ten Clubs,
Card Eight Clubs, Card King Clubs]
hand1 = [Card Jack Spades, Card Jack Hearts, Card Ten Spades, Card Ace Hearts, Card Ten Hearts,
Card Nine Hearts, Card Seven Clubs, Card Ace Clubs, Card King Diamonds,
Card Ten Diamonds]
hand2 = [Card Eight Spades, Card Queen Spades, Card Seven Spades, Card Seven Diamonds,
Card Seven Hearts, Card Eight Hearts, Card Queen Hearts, Card King Hearts,
Card Nine Diamonds, Card Eight Diamonds]
hands = map (putAt Hand1) hand1
++ map (putAt Hand2) hand2
++ map (putAt Hand3) hand3
skt = [Card Nine Clubs, Card Queen Clubs]
singleVsBots :: (Team -> Hand -> OnlineEnv) -> IO () singleVsBots :: (Team -> Hand -> OnlineEnv) -> IO ()
singleVsBots mkPlayer = do singleVsBots mkPlayer = do
cards <- liftIO $ shuffleCards --let gen = mkStdGen 123
-- cards = shuffleCardsWithGen gen
let ps = Players let ps = Players
(PL $ mkPlayer Team Hand1) (PL $ mkPlayer Team Hand1)
(PL $ Stupid Team Hand2) (PL $ Stupid Team Hand2)
(PL $ mkAIEnv Single Hand3 10) (PL $ mkAIEnv Single Hand3 10)
env = SkatEnv (distribute cards) Nothing Spades ps env = SkatEnv cardDistr Nothing Spades ps
liftIO $ evalStateT (publishGameStart Hand3 >> turn Hand1 >>= publishGameResults) env liftIO $ evalStateT (publishGameStart Hand3 >> turn Hand1 >>= publishGameResults) env