From 79fba8934969b660298e3a2c875a49d500313d1a Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Thu, 5 Jan 2023 20:59:02 +0800 Subject: Prompt for card to play --- Game.hs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'Game.hs') diff --git a/Game.hs b/Game.hs index 3b02598..27d7804 100644 --- a/Game.hs +++ b/Game.hs @@ -1,11 +1,37 @@ module Game where -import Player (Player) +import Data.Char (isDigit) +import Control.Monad (when) +import System.Random (RandomGen) +import Player (Player, shed, draw) import qualified Player as P import Card (Card) import qualified Card as C +data Direction = CCW | CW data Game = Game { players :: [Player] + , playerIdx :: Int + , attack :: Integer + , direction :: Direction , stockPile :: [Card] , discardPile :: [Card] } + +prompt :: Game -> IO Card +prompt game@(Game plyrs pidx att _ _ _) = do + let player = plyrs !! pidx + let cards = P.cards player + putStrLn $ P.name player ++ "'s turn" + putStrLn $ P.showCards player + cardIdxStr <- getLine + if any (== False) $ map isDigit cardIdxStr + then do + putStrLn "Please input card #" + prompt game + else do + let cardIdx = read cardIdxStr - 1 + if cardIdx < 0 || cardIdx >= length cards + then do + putStrLn "This card does not exist, try again" + prompt game + else return $ cards !! cardIdx -- cgit v1.2.3