我一直使用Haskell/Yampa(= Arrows)(与HOOD)为我的游戏对象生成调试输出。在Haskell/Yampa和HOOD中调试游戏对象的输出
我的引擎基本上运行一个产生输出状态(线,圆)的游戏对象列表,然后渲染。
data Output = Circle Position2 Double | Line Vector2
output :: [Output] -> IO()
output oos = mapM render oos
render :: Output -> IO()
render (Circle p r) = drawCircle p r
render (Line vec) = drawLine (Point2 0 0) vec
的选手对象只是移动到右侧,被表示为(定位)的圆。
playerObject :: SF() Output -- SF is an Arrow run by time
p <- mover (Point2 0 0) -< (Vector2 10 0)
returnA -< (Circle p 2.0)
动机只是一个简单的积分器(加速 - >网速度>位置)其中,I想观察速度并使其作为调试输出作为(unpositioned)线。
mover :: Position2 -> SF Vector2 Position2
mover position0 = proc acceleration -> do
velocity <- integral -< acceleration -- !! I want to observe velocity
position <- (position0 .+^) ^<< integral -< velocity
returnA -< position
如何为我的游戏对象函数的内部值创建附加图形调试输出?实际上应该发生的是在输出中,首先渲染实际对象(圆形),但也渲染额外的调试输出(作为行的移动向量)。大概我可以通过HOOD来实现这个目标,但是我仍然不太熟悉Haskell,也不知道如何为我的案例采用HOOD教程。
这不会给图形输出,不过,在控制台上只是文本,并且一般有点有限。有时候'unsafePerformPrintfDebugging'就是你真正需要的,但我认为这里的提问者不止于此。 – 2010-07-15 13:50:38