Se estás a fazer um projeto em Haskell e queres adicionar uma interface gráfica, então provavelmente deparaste-te com a biblioteca de Gloss que, apesar de não ser perfeita, tem bastantes funcionalidades que são suficientes para fazer um trabalho impressionante.

Neste guia, vamos ajudar-te a dar aquele primeiro passo para conheceres esta ferramenta e também algumas dicas pelo caminho.

Estes são os imports que vamos usar ao longo de todo o guia.

import Graphics.Gloss
import Graphics.Gloss.Interface.Pure.Game
import Graphics.Gloss.Juicy
import Data.Maybe

1. Conhecer o Gloss

Vamos começar por desenhar uma linha simples usando a função display.

display :: Display -> Color -> Picture -> IO ()

Para isso, vamos precisar de um **Display,** que é a janela onde a imagem vai ser desenhada, uma cor de fundo e uma Picture.

No displayMode temos o tipo (InWindow), nome da janela (“Game”), tamanho da janela (640,640) e posição no ecrã (o canto superior esquerdo (0,0)).

Nota: O displayMode também poderia ser apenas FullScreen.

displayMode :: Display
displayMode = InWindow "Game" (640,640) (0,0)

Existem vários tipos de figuras que o Gloss nos permite desenhar. Neste caso, vamos desenhar uma linha que possui um caminho, sendo este um array de pontos que delimita a figura.

linePic :: Picture
linePic = Line [((-100),(-100)),((-100),100),(100,100),(100,(-100)),((-100),(-100))]

Finalmente, podemos invocar a função display com todas as funções definidas anteriormente.

main :: IO()
main = do display displayMode white linePic