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 | editar código]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 | editar código]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 | editar código]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 | editar código]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