add pvp mode, add chan communicator instance, fix json instances

This commit is contained in:
2020-03-26 13:26:40 +01:00
parent 672746e302
commit fc28c2918b
3 changed files with 20 additions and 5 deletions
+13 -4
View File
@@ -1,5 +1,5 @@
module Skat.Matches (
singleVsBots
singleVsBots, pvp
) where
import Control.Monad.State
@@ -31,11 +31,20 @@ cardDistr = emptyPiles hand1 hand2 hand3 skt
singleVsBots :: Communicator c => c -> IO ()
singleVsBots comm = do
--let gen = mkStdGen 123
-- cards = shuffleCardsWithGen gen
cards <- shuffleCards
let ps = Players
(PL $ OnlineEnv Team Hand1 comm)
(PL $ Stupid Team Hand2)
(PL $ mkAIEnv Single Hand3 10)
env = SkatEnv cardDistr Nothing Spades ps Hand1
env = SkatEnv (distribute cards) Nothing Spades ps Hand1
liftIO $ evalStateT (publishGameStart Hand3 >> turn >>= publishGameResults) env
pvp :: Communicator c => c -> c -> c -> IO ()
pvp comm1 comm2 comm3 = do
cards <- shuffleCards
let ps = Players
(PL $ OnlineEnv Team Hand1 comm1)
(PL $ OnlineEnv Team Hand2 comm2)
(PL $ OnlineEnv Team Hand3 comm3)
env = SkatEnv (distribute cards) Nothing Spades ps Hand1
liftIO $ evalStateT (publishGameStart Hand3 >> turn >>= publishGameResults) env