Skat Engine und AI auf Haskell Basis
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

43 řádky
1.0KB

  1. {-# LANGUAGE ExistentialQuantification #-}
  2. module Player where
  3. import Card
  4. import Pile
  5. class Player p where
  6. team :: p -> Team
  7. hand :: p -> Hand
  8. chooseCard :: p -> Colour -> Maybe Colour -> [Card] -> Card
  9. data Stupid = Stupid { getTeam :: Team
  10. , getHand :: Hand }
  11. deriving Show
  12. instance Player Stupid where
  13. team = getTeam
  14. hand = getHand
  15. chooseCard p trumpCol turnCol hand = head possible
  16. where possible = filter (isAllowed trumpCol turnCol hand) hand
  17. data PL = forall p. (Show p, Player p) => PL p
  18. instance Show PL where
  19. show (PL p) = show p
  20. instance Player PL where
  21. team (PL p) = team p
  22. hand (PL p) = hand p
  23. chooseCard (PL p) = chooseCard p
  24. data Players = Players PL PL PL
  25. deriving Show
  26. player :: Players -> Hand -> PL
  27. player (Players p _ _) Hand1 = p
  28. player (Players _ p _) Hand2 = p
  29. player (Players _ _ p) Hand3 = p
  30. --playersFromTable :: Players -> [CardS] -> [Player]
  31. --playersFromTable ps = map (player ps . playerOfHand . getOwner)