From b94584aee4306ebea6cfb24e71e891cef617f098 Mon Sep 17 00:00:00 2001 From: flavis Date: Sun, 15 Sep 2019 23:26:03 +0200 Subject: [PATCH] add testing card distribution utils --- src/Skat/Card.hs | 5 ++++- src/Skat/Matches.hs | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Skat/Card.hs b/src/Skat/Card.hs index 8e4ec21..e0ee59c 100644 --- a/src/Skat/Card.hs +++ b/src/Skat/Card.hs @@ -6,7 +6,7 @@ module Skat.Card where import Data.List import Data.Aeson -import System.Random (newStdGen) +import System.Random (newStdGen, StdGen) import Control.DeepSeq import Skat.Utils @@ -123,6 +123,9 @@ shuffleCards = do gen <- newStdGen return $ shuffle gen allCards +shuffleCardsWithGen :: StdGen -> [Card] +shuffleCardsWithGen gen = shuffle gen allCards + -- TESTING VARS c1 :: Card diff --git a/src/Skat/Matches.hs b/src/Skat/Matches.hs index c556acc..cbf40ab 100644 --- a/src/Skat/Matches.hs +++ b/src/Skat/Matches.hs @@ -3,6 +3,7 @@ module Skat.Matches ( ) where import Control.Monad.State +import System.Random (mkStdGen) import Skat import Skat.Operations @@ -14,12 +15,30 @@ import Skat.AI.Rulebased import Skat.AI.Online 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 mkPlayer = do - cards <- liftIO $ shuffleCards + --let gen = mkStdGen 123 + -- cards = shuffleCardsWithGen gen let ps = Players (PL $ mkPlayer Team Hand1) (PL $ Stupid Team Hand2) (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