BlitzMax/Lições/Gráfico

Vamos agora iniciar a parte de preparação de gráfico para mostrar os comandos gráficos do BlitzMax.

Criando um gráfico

editar

Para criar um gráfico iremos usar o comando Graphics que precisa de no mínimo 2 parâmetros, o primeiro é a largura e o segundo é a altura da tela. No final iremos fechar o gráfico com o comand EndGraphics

Graphics(800, 600)
EndGraphics

Vamos agora adicionar um comando adicional que é o depth que deverá sempre ser 0.

Graphics(800, 600, 0)
EndGraphics

O próximo comando é a frequência (hertz) do gráfico. É ele que determina quantos frames por segundo a aplicação terá.

Graphics(800, 600, 0, 60)
EndGraphics

Por último é o campo flag que deverá sempre ser 0.

Graphics(800, 600, 0, 60, 0)
EndGraphics

Criando um loop

editar

Agora que criarmos um gráfico vimos que o que ele apenas faz é piscar na tela, para fazer o gráfico ficar funcionando continuamente precisamos criar um loop, nesse exemplo agora vamos criar um gráfico que irá sair só quando apertarmos a tecla Esc, para isso vamos criar um While-Wend.

Graphics(800, 600, 0, 60, 0)
    While(Not KeyHit(KEY_ESCAPE))
    Wend
EndGraphics

Desenhando algo na tela

editar

Agora que já conseguimos fazer uma tela que fique constantemente ligada vamos colocar algo para ser exibido, para isso dentro do nosso loop vamos usar a função DrawRect como parâmetros vamos colocar: 1. o pixel X onde o retângulo vai ser desenhado, 2. o pixel Y onde o retângulo vai ser desenhado, 3. a largura do retângulo, 4. a altura do retângulo.


Graphics(800, 600, 0, 60, 0)
    While(Not KeyHit(KEY_ESCAPE))
        DrawRect(10, 20, 100, 200)
    Wend
EndGraphics

Agora precisamos descarregar do buffer o que foi desenhado (no caso, o nosso retângulo), para isso vamos usar a função Flip()

Graphics(800, 600, 0, 60, 0)
    While(Not KeyHit(KEY_ESCAPE))
        DrawRect(10, 20, 100, 200)
        Flip()
    Wend
EndGraphics

Atualizando a tela

editar

Agora com o loop criado podemos acompanhar a atualização da nossa tela, para isso vamos criar uma variável e coloca-la como parâmetro no DrawRect.

Graphics(800, 600, 0, 60, 0)
    variavel% = 0
    While(Not KeyHit(KEY_ESCAPE))
        DrawRect(variavel, 20, 100, 200)
        Flip()
    Wend
EndGraphics

Agora vamos incrementa-la dentro do loop para o DrawRect ser desenhado em um local diferente.

Graphics(800, 600, 0, 60, 0)
    variavel% = 0
    While(Not KeyHit(KEY_ESCAPE))
        DrawRect(variavel, 20, 100, 200)
        variavel% = variavel% + 1
        Flip()
    Wend
EndGraphics

Se você colocou o programa para rodar deve ter notado que o retângulo deixou um rastro na tela, isso acontece porque o Flip() apenas desenha a imagem por cima da outra, se não quisermos ter esse problema deve-se limpar a tela antes de desenhar qualquer coisa, para isso usa-se a função Cls() (que vem de Clear Screen) que deve ser sempre a primeira a ser chamadano loop.

Graphics(800, 600, 0, 60, 0)
    variavel% = 0
    While(Not KeyHit(KEY_ESCAPE))
        Cls()
        DrawRect(variavel, 20, 100, 200)
        variavel% = variavel% + 1
        Flip()
    Wend
EndGraphics