0

我正在使用Gloss在 Haskell 中制作 Asteroids 克隆。

如果飞船在屏幕右侧熄灭,我希望飞船从左侧返回。由于原点(0, 0)位于屏幕中间,因此这变得不必要地棘手。

有没有办法将原点移动到左上(或下)?

我的Main模块(我与之交互的地方Gloss)如下所示:

module Main where

import           Graphics.Gloss    (Display (InWindow), black, play)

-- my own imported code
import           Assets            (loadAssets)
import           GameState         (defaultHeight, defaultWidth, initGameState)
import           HandleInput       (handleInput)
import           ProgressGameState (progressGameState)
import           Render            (render)

windowDisplay :: Display
windowDisplay = InWindow "Window" (defaultWidth, defaultHeight) (10, 10)

main :: IO ()
main = do
  assets <- loadAssets
  play
    windowDisplay
    black
    60
    initGameState
    (render assets)
    handleInput
    progressGameState

4

1 回答 1

0

我认为没有一种简单的方法可以移动原点。但是无论你的格式之间的转换是一个简单的翻译。您可以使用函数(甚至是智能构造函数)在两者之间进行计算。

例如,如果 (0,0) 位于尺寸为 的图片的中心(x,y),但您希望它位于左上角,您所要做的就是(x/2,y/2)从所有点中减去以使数学再次正确。

于 2020-12-11T22:40:48.647 回答