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