Skip to content

Commit

Permalink
move pickDecks into separate module.
Browse files Browse the repository at this point in the history
Tested-on: collins x86_64 GNU/Linux
  • Loading branch information
droundy committed Dec 16, 2009
1 parent c195eb6 commit 509bc0a
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 27 deletions.
4 changes: 3 additions & 1 deletion Dominion.hs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
module Dominion ( module Dominion.Game, module Dominion.Cards,
module Dominion.Types, shuffleIO, Pretty(pretty) ) where
module Dominion.Types, shuffleIO, Pretty(pretty),
pickDecks ) where

import Dominion.Game
import Dominion.Cards
import Dominion.Types
import Dominion.Stack ( shuffleIO )
import Dominion.Pretty ( Pretty(pretty) )
import Dominion.Bots ( pickDecks )
19 changes: 19 additions & 0 deletions Dominion/Bots.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module Dominion.Bots ( pickDecks ) where

import Dominion.Types ( Card, cardPrice )
import Dominion.Cards ( allRecommended, allDecks )
import Dominion.Stack ( shuffleIO )

import System.Random ( randomRIO )
import Data.List ( sortBy )
import Data.Ord ( comparing )

pickDecks :: [Card] -> IO [Card]
pickDecks cs = do let sets = filter ((==10).length.snd) allRecommended
r <- randomRIO (1,100)
decks <- if r > (10 :: Int) || not (null cs)
then (take 10 . (cs++)) `fmap` shuffleIO allDecks
else do (sn,d) <- head `fmap` shuffleIO sets
putStrLn ("Using set "++sn)
return d
return $ sortBy (comparing cardPrice) decks
16 changes: 2 additions & 14 deletions HTTP/Dominion.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@

module HTTP.Dominion ( dominionHandler, MessageToGame(..) ) where

import Dominion ( Card, MessageToClient(Question, Info), QId, Answer,
import Dominion ( MessageToClient(Question, Info), QId, Answer,
ResponseFromClient(ResponseFromClient),
play, evalGame, pretty,
shuffleIO, allRecommended, allDecks )
play, evalGame, pretty, pickDecks )
import qualified Dominion ( start )
import TCP.Chan ( Output, pipe, readInput, writeOutput )

import HTTP.Response ( Response, jsPrintf, blank200, error404 )
import HTTP.LoginServer ( Agent )
import HTTP.Handlers ( Handler(..), Message(..) )

import System.Random ( randomRIO )
import Data.Maybe ( fromMaybe )
import Control.Monad ( forM_, forever )
import Control.Concurrent ( forkIO )
Expand Down Expand Up @@ -122,13 +120,3 @@ sayto sendmess ags a s =
say :: (Agent -> String -> IO ()) -> DomState -> String -> IO ()
say sendmess ags s =
forM_ (clients ags) $ \(a,f) -> sendmess a (f s)

pickDecks :: [Card] -> IO [Card]
pickDecks cs = do let sets = filter ((==10).length.snd) allRecommended
r <- randomRIO (1,100)
decks <- if r > (10 :: Int) || not (null cs)
then (take 10 . (cs++)) `fmap` shuffleIO allDecks
else do (sn,d) <- head `fmap` shuffleIO sets
putStrLn ("Using set "++sn)
return d
return decks
12 changes: 0 additions & 12 deletions testdom.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import Control.Monad ( forever, replicateM )
import Control.Monad.State ( execStateT,
StateT, runStateT, put, get, modify, liftIO )
import Data.Char ( toLower, isSpace )
import Data.List ( sortBy )
import Data.Ord ( comparing )
import System.IO ( hFlush, stdout )
import System.Environment ( getArgs )
import System.Random ( randomRIO )
Expand Down Expand Up @@ -272,16 +270,6 @@ mainArgs cs as
lookupBy f s (x:xs) | lc (f x) == lc s = Just x
| otherwise = lookupBy f s xs

pickDecks :: [Card] -> IO [Card]
pickDecks cs = do let sets = filter ((==10).length.snd) allRecommended
r <- randomRIO (1,100)
decks <- if r > (10 :: Int) || not (null cs)
then (take 10 . (cs++)) `fmap` shuffleIO allDecks
else do (sn,d) <- head `fmap` shuffleIO sets
putStrLn ("Using set "++sn)
return d
return $ sortBy (comparing cardPrice) decks

twoPlayer :: [Card] -> IO ()
twoPlayer cs = do
(c1i, c1o) <- pipe
Expand Down

0 comments on commit 509bc0a

Please sign in to comment.