我刚开始使用haskell光泽。我对它的功能有所了解。我正在尝试在 haskell 中绘制棋盘。主要问题是一切都被绘制在中心。如果我使用该功能translate
,则板正在随机位置绘制。这可能是因为 translate 从当前位置给定的距离移动到给定的确切点。
光泽 haskell 有没有办法让我们可以移动到一个特定的点,比如setTransform
or translateTo
。或者是否有任何函数可以告诉我们当前所在点的坐标。
module Main where
import Graphics.Gloss
import Lib (someFunc)
blockSize :: Float
blockSize = 50
board :: [[Int]]
board = replicate 8 (replicate 8 0)
drawTile :: Float -> Float -> Color -> Picture
drawTile a b col = translate a b $ color col $ rectangleSolid blockSize blockSize
-- drawRow :: Int -> Pictur
-- drawRow =
toInt :: Float -> Integer
toInt = round
getColor :: Float -> Float -> Color
getColor i j = if even $ toInt ((i * 8) + j) then red else blue
screenHeight = 700
screenWidth = 1000
drawing :: Picture
drawing = pictures [drawTile (row * blockSize) (e * blockSize) (getColor row e) | row <- [0 .. 8], e <- [0 .. 8]]
-- moveToStart = viewPortTranslate
main :: IO ()
main = display (InWindow (show board) (screenWidth, screenHeight) (10, 10)) white (translate 0 0 drawing)
编辑: 我不想通过使用一些数学技巧来解决这个特定问题。我想知道的是我怎样才能翻译到一个特定的位置。就像我做someFunc 0 0
的时候应该去0 0
右上角。
如果不可能,请告诉获取当前变换点的方法。