在我的突破实现中,有两个主要行为描述了
游戏的主要状态:

paddlePosition :: Behavior t Point
ballPosition :: Behavior t Point

两者均以tickEvent :: Event t ()的形式实现,该代码离散地
更新它们。
gameOverEvent :: Event t ()过滤所有滴答声事件,其中球
位置在屏幕下方。

我想尽快用一种新的行为替换paddlePositiongameOverEvent,使用伪代码将拨片保留在适当的位置:
newPaddlePosition = \t -> case gameOverEvent of
    [] -> paddlePosition t
    ((t',()) : _) -> paddlePosition t'

第一个问题是:如何使用来表达newPaddlePosition活性香蕉?

第二个问题是含糊不清:什么是组织
整个程序取决于游戏是否结束?还有其他
诸如以下的注意事项:如何处理ballPosition,如何绘制游戏等
上。

最佳答案

您可能正在寻找动态事件切换,尤其是switchB组合器。

另请参见this question

请注意,您的newPaddlePosition函数的伪代码意义不大:它表示当gameOverEvent从不发生时,新的桨位置等于paddlePosition,否则它是恒定的,并且等于事件发生时的paddlePosition的值发生。这不可能在因果FRP库中表达。您可能会说其他话。

10-06 02:39