小编Nik*_*gyu的帖子

Haskell中的计算机游戏 - 小工具工具包需要

我正在Haskell中编写一个小型RTS游戏,现在是时候为它创建一些GUI(按钮,菜单等).但是,我没有任何GUI工具包创建经验,所以我要感谢有关如何选择正确的数据类型,事件处理例程等的想法.

所需功能:菜单屏幕(主要,加载/保存,设置,网络游戏),文本输入,游戏界面(主屏幕(C&C)),按钮,选择和复选框.

我当前的方法是将整个GUI表示为一个状态机,它在它们之间有许多状态和转换,当事件到达时触发它们:

-- Local client state.  Actual game state is stored on the server
-- and is updated/synced separately.
data ClientState = […]

-- Keyboard state, mouse state, quadtree of clickables, list of
-- widgets.
data UIState = […]

uiCycle :: UIState -> ClientState -> IO ()
uiCycle uiState clientState = do
  event <- waitEvent
  let widget = findWidget uiState event
  let (uiState', clientStateAction, ioAction) =
        uiTransition widget event uiState clientState
  -- Update game state (execute game logic).
  let …
Run Code Online (Sandbox Code Playgroud)

user-interface haskell sdl

8
推荐指数
0
解决办法
461
查看次数

标签 统计

haskell ×1

sdl ×1

user-interface ×1