我想在haskell中实现一个简单的8off solitaire game,我不太清楚如何定义我的板,以及如何使函数返回一个随机的启动板。如何修改myBoard和我的数据结构?到现在为止,我有这些:
data Pip = A|TW0|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|TEN|J|Q|K --pip value
deriving (Eq,Show)
data Suit = S|H|D|C --suit
deriving (Eq,Show)
type Card = (Pip,Suit) --card
type Deck = [(Card)] --deck
type Foundations = [(Deck)] foundations
type Columns = [(Deck)] --columns
type Reserve = [(Deck)] --reserve
type EOBoard = [(Deck)]
myBoard::Deck->EOBoard
myBoard pack = [shuffle pack]
返回我,这个:
[[(K,D),(TW0,H),(SEVEN,C),(SEVEN,S),(THREE,D),(NINE,S),(THREE,C),(FOUR,H),(THREE,S),(TW0,D),(TW0,C),(FOUR,S),(K,S),(TEN,D),(J,S),(EIGHT,H),(FOUR,D),(NINE,H),(SEVEN,H),(A,S),(SIX,S),(EIGHT,S),(FIVE,S),(FOUR,C),(K,H),(Q,D),(THREE,H),(TEN,H),(A,D),(EIGHT,C),(NINE,D),(Q,H),(J,D),(J,C),(TEN,C),(Q,S),(Q,C),(J,H),(NINE,C),(SIX,C),(FIVE,H),(SEVEN,D),(A,C),(TW0,S),(EIGHT,D),(FIVE,D),(TEN,S),(K,C),(A,H),(SIX,D),(FIVE,C),(SIX,H)]]
答案 0 :(得分:5)
看起来你有一个良好的开端!也许您已经准备好将这些组件中的一些放在一起组成您的电路板。
你可以考虑制作一个董事会/游戏ADT。
您可能希望拥有默认功能,该功能可设置主板的默认状态。
defaultFoundation
返回Foundation
,其中包含四个空Deck
defaultColumns
,Deck
并将其拆分,返回包含8 Columns
个Deck
的{{1}},每张6张卡片(也许您只希望传入第一张卡片)仅来自甲板的48张卡片。defaultReserves
,返回Reserve
,其中包含8个Deck
s,4个带有卡片,4个为空(也许这里是您要传递来自{{的剩余4张卡片的地方1}})到目前为止你做得很好,一次只做一步。 :)