2019-08-20 18:19:54 +02:00
|
|
|
{-# LANGUAGE NamedFieldPuns #-}
|
2019-08-18 22:11:57 +02:00
|
|
|
module AI (
|
|
|
|
move
|
|
|
|
) where
|
|
|
|
|
2019-08-20 18:19:54 +02:00
|
|
|
import Data.Map ((!))
|
|
|
|
import Hanafuda (cardsOfPack, sameMonth)
|
|
|
|
import Hanafuda.Player (Player(..), Players(..))
|
|
|
|
import Hanafuda.KoiKoi (GameBlueprint(..), Move(..), PlayerKey, Step(..))
|
2019-08-19 18:48:11 +02:00
|
|
|
import Hanafuda.Message (PublicGame)
|
2019-08-18 22:11:57 +02:00
|
|
|
|
2019-08-19 18:48:11 +02:00
|
|
|
move :: PlayerKey -> PublicGame -> Move
|
2019-08-20 18:19:54 +02:00
|
|
|
move me (Game {step = ToPlay, players = Players p}) =
|
|
|
|
Play . head . cardsOfPack . hand $ p ! me
|
|
|
|
move me (Game {step = Turned card, river}) =
|
|
|
|
Choose . last . cardsOfPack $ sameMonth card river
|
|
|
|
where
|
|
|
|
last [] = error "Empty list"
|
|
|
|
last [x] = x
|
|
|
|
last (x:xs) = last xs
|
|
|
|
move me _ = KoiKoi True
|