2

我正在写一个乒乓球游戏,我需要一些关于游戏逻辑的帮助。我的问题是我在检测球是否在地图外时遇到了麻烦,这导致球只是出界并且没有得分。目前它的工作原理是这样的:

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 是问题所在,由于某种原因它不起作用。:(

4

1 回答 1

1

代码盲目...我忘记将 stepScore 置于“播放”状态。

于 2013-08-11T18:26:07.333 回答