我正在写一个乒乓球游戏,我需要一些游戏逻辑方面的帮助。我的问题是,当我检测到球是否在地图之外时我遇到了麻烦,这导致球刚出界并没有得分。目前它的工作原理如下:
stepScore :: State -> State
stepScore s
| s^.ball.pos.x <= 15 = resetGame $ score.right +~ 1 $ s
| s^.ball.pos.x >= 585 = resetGame $ score.left +~ 1 $ s
| otherwise = s
常数的原因是游戏尺寸为600x400,球的宽度为15像素,位置在核心位置。 resetGame的工作原理如下:
resetGame :: State -> State
resetGame s = ball.pos.y .~ 200 $ ball.pos.x .~ 300 $ state .~ Pause $ s
但不知何故,由于某种原因这不起作用。球仍然离开地图,游戏基本上已经破裂。
所以,我的问题如下;我怎么能写这个,所以它的工作原理,基本上,所以当球超出界限时,游戏重置和得分是按照预期给予每个玩家的?完整的源代码在这里http://lpaste.net/91745,其中上面的代码在第107到114行定义,并在第118行使用。
我很感激帮助,谢谢。
编辑:我在stepScore中尝试了不同的常量,而stepScore是问题所在,由于某些原因它不起作用。 :(答案 0 :(得分:1)
代码失明......我忘了将stepScore置于'Play'状态。