3

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

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

两者都是根据tickEvent :: Event t ()离散更新它们来实现的。

gameOverEvent :: Event t ()过滤球位置在屏幕下方的所有刻度事件。

我想paddlePosition用一个新的行为来替换,只要有一个gameOverEvent,把桨留在原地,伪代码:

newPaddlePosition = \t -> case gameOverEvent of
    [] -> paddlePosition t
    ((t',()) : _) -> paddlePosition t'

第一个问题是:如何newPaddlePosition使用 reactive-banana 进行表达?

第二个问题有点模糊:根据游戏是否结束来组织整个程序的好方法是什么?还有其他一些考虑,比如:如何处理ballPosition,如何绘制游戏等等。

4

1 回答 1

1

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

另请参阅此问题

请注意,您的newPaddlePosition函数的伪代码没有多大意义:它表示当gameOverEvent永远不会发生时,新的桨位置等于paddlePosition,否则它是恒定的并且等于paddlePosition事件发生时的值。这是不可能在因果 FRP 库中表达的。你可能还有别的意思。

于 2015-10-16T14:08:31.597 回答