Skat Engine und AI auf Haskell Basis
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

43 lignes
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)