我正在尝试与Yesod一起实施Pachisi式桌面游戏。目前,Haskell代码通过Ajax接收板子的当前状态,做一些事情(例如计算一块新板块是否可以进入板子,游戏是否结束等等)并将其作为客户端可以使用的JSON返回更新视图。在Yesod中保持状态
实际上,我在客户端保持状态以规避Haskell没有可变性的问题。在其他语言中,我可能会声明变量gameState
,并在服务器端代码将其返回给客户端之前对其进行修改,但在Haskell中...我可能完全缺少某些东西;在Haskell方面,我的经验很少。
我想尽可能少地做客户端,因为这应该是一个哈克练习。我找到了Haskell: Yesod and state,但无法真正理解它。所以问题依然存在:有没有比我的解决方案更好的处理游戏状态的方法?
是的,有更好的方法来做到这一点。例如,您可以保留数据库中几乎所有的客户端状态,并根据客户端请求检索/更改它(获取只需要一个ID,发布ID +更改集)。 ['persistent'](https://www.yesodweb.com/book/persistent)是通过'Yesod'实现此功能的“默认”方式,但如果您愿意,您可以推出自己的解决方案或使用其他方法。 – Cubic