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
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
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
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
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