【发布时间】:2014-07-04 16:53:28
【问题描述】:
在阅读 LYAH 后,我正在用 Haskell 编写一个基于文本的冒险游戏以获得经验,但我需要帮助编写一个函数,在该函数中访问两个数据结构(在本例中为两个玩家)和另一个结构(另一个 [被攻击] 玩家) 被退回。谢谢!
data Player = Player { name :: String
, hp :: Int
, atk :: Int
, def :: Int
, spd :: Int
} deriving (Show, Eq)
data Qstat = Qstat Int Int Int Int
lv :: Qstat
lv = Qstat 1 1 1 1
describe :: Player -> String
describe (Player {name = n, hp = h, atk = a, def = d, spd = s})
= "Name: " ++ n
++ ", HP: " ++ (show h)
++ ", ATK: " ++ (show a)
++ ", DEF: " ++ (show d)
++ ", SPD: " ++ (show s)
promote :: Qstat -> Player -> Player
promote (Qstat w x y z) (Player {name = n, hp = h, atk = a, def = d, spd = s})
= Player n (h + w) (a + x) (d + y) (s + z)
gets :: Player -> Qstat
gets (Player {name = n, hp = h, atk = a, def = d, spd = s})
= Qstat n h a d s
attack :: Player -> Player -> Player
attack = --how can I access the stats of both players (preferably without do notation)
【问题讨论】:
-
和以前一样吗?
attack (Player {name = n, hp = h, atk = a, def = d, spd = s}) ... -
大多数 Haskell 教程和书籍并不完全完整。您应该至少从两个来源中学习。
标签: haskell data-structures functional-programming