2
我正在使用Haskell編寫一個簡單的遊戲/遊戲引擎。如何將遊戲的輸入與其更新邏輯分開?
以下是我遊戲循環的一個迭代:
input <- getInput -- where input is some list of pressed keys
let world' = update world input
-- ... continue with the next iteration
的getInput
功能看起來像:
getInput = do
w <- getKey $ CharKey 'W'
q <- getKey $ CharKey 'Q'
-- ...
return [("W", w), ...]
和update
功能(World.hs
文件中)看起來像:
update world input = world'
where world' = -- if w, then do something, if q then do something, etc.
正如你所看到的,我的輸入l ogic分成我的實際Input.hs
文件和我的World.hs
文件。更新功能應該不需要測試按鍵(在我看來)。
如何從我的更新邏輯中分割我的輸入?
我在尋找類似回調的東西,我想可以隨意註冊和取消註冊。註冊moveForward
到W
的按鍵將是理想的。
我也看了netwire - 但我很難包裝我的頭功能反應式編程。如果這是FRP的一個案例,我希望使用它的任何例子。