Nossas imagens são desenhadas na Form, por nossa vontade. Isso só acontece quando realizamo um evento, um pressionamento de qualquer tecla.
Adicione uma variável GameRunning do tipo boelana. Ela indicará se nosso jogo está vivo ou não.
Embaixo do último DesenharImagem, adicione a seguinte sub:
While GameRunning 'enquanto GameRunning for verdadeira, repita
'Desenhar Imagens
Application.DoEvents ' Faça com eventos
A DoEvents serve para processar os eventos pendentes do sistema. Sem isso, cada vez que o GameLoop é executado o programa é travado até que ele termine todo o loop. Quando terminado ele voltaria a responder aos eventos normalmente.
Alterando o Form_Load
Quando o programa terminar de carregar as imagens, mudará a variável GameRunning para True, mostrará o form e irá inciar o GameLoop.
Me.Show
Isso é para ter certeza de que o Form será mostrado.
Vamos ao evento KeyDown e recorte a parte de desenho dessa sub e cole aqui no meio.
Quando a variável GameRunning for falsa, a sub GameLoop perderá o ciclo e irá diretamente para abaixo fechando o jogo.
g.Dispose
Application.Exit
Agora dê um Play e veja ... Sim, o Form inteiro fica piscando, só vou explicar isso na próxima aula.
Abra o gerenciador de tarefas e olhe o processo do aplicativo.
O aplicativo usa 50% da CPU, um jogo tão pequenino e simples não precisa usar tudo isso de processamento.
Embaixo de DoEvents, vamos adicionar um Sleep(20).
Isso fará com que o programa durma, por 20 milésimos de segundos. Esses milésimos pode parecer pouco mas não é. Observe agora a foto abaixo
Sim isso ajuda muito. Mas minha form ainda não pára de piscar, a animação do fogo corre que nem o satanas, por que?
R : ...
Putz.. quase esqueci, volte ao evento KeyDown e adicione:
Quando a tecla Esc(Escape) for pressionada muda o GameRunning para False finalizando o aplicativo. Este é o modo correto de se quebrar o GameLoop, caso você feche pelo X do form, ele irá apenas sumir visivelmente e ficará ainda preso na memória.
Projeto Aula
Adicione uma variável GameRunning do tipo boelana. Ela indicará se nosso jogo está vivo ou não.
Embaixo do último DesenharImagem, adicione a seguinte sub:
While GameRunning 'enquanto GameRunning for verdadeira, repita
'Desenhar Imagens
Application.DoEvents ' Faça com eventos
A DoEvents serve para processar os eventos pendentes do sistema. Sem isso, cada vez que o GameLoop é executado o programa é travado até que ele termine todo o loop. Quando terminado ele voltaria a responder aos eventos normalmente.
Alterando o Form_Load
Quando o programa terminar de carregar as imagens, mudará a variável GameRunning para True, mostrará o form e irá inciar o GameLoop.
Me.Show
Isso é para ter certeza de que o Form será mostrado.
Vamos ao evento KeyDown e recorte a parte de desenho dessa sub e cole aqui no meio.
Quando a variável GameRunning for falsa, a sub GameLoop perderá o ciclo e irá diretamente para abaixo fechando o jogo.
g.Dispose
Application.Exit
Agora dê um Play e veja ... Sim, o Form inteiro fica piscando, só vou explicar isso na próxima aula.
Abra o gerenciador de tarefas e olhe o processo do aplicativo.
O aplicativo usa 50% da CPU, um jogo tão pequenino e simples não precisa usar tudo isso de processamento.
Embaixo de DoEvents, vamos adicionar um Sleep(20).
Isso fará com que o programa durma, por 20 milésimos de segundos. Esses milésimos pode parecer pouco mas não é. Observe agora a foto abaixo
Sim isso ajuda muito. Mas minha form ainda não pára de piscar, a animação do fogo corre que nem o satanas, por que?
R : ...
Putz.. quase esqueci, volte ao evento KeyDown e adicione:
Quando a tecla Esc(Escape) for pressionada muda o GameRunning para False finalizando o aplicativo. Este é o modo correto de se quebrar o GameLoop, caso você feche pelo X do form, ele irá apenas sumir visivelmente e ficará ainda preso na memória.
Projeto Aula