|
Normalmente as pessoas começam a criação de um jogo, olhando para a programação. Mas vamos fazer de modo diferente aqui: começar olhando para os elementos visuais ou "gráficos", como a comunidade gosta de chamá-los. Imagine que em nosso jogo teremos um cenário visto de cima, onde um avião caça/bombardeiro bimotor deve, ao mesmo tempo, destruir as instalações do inimigo e abater caças ou bombardeiros que tentarem fazer o mesmo com seu aeroporto de partida. Estrutura mais simples que essa, só jogo de baralho...
Após desenhar o esboço em uma folha de papel, passe-a pelo scanner e teremos uma imagem digital (foto) do nosso cenário. Claro que muita coisa vai estar deslocada e fora de eixo, mas a fase de elaborar ou "dar polimento" aos gráficos vem depois. O importante aqui é estabelecer o funcionamento do jogo e testar se o esquema funcional proposto tem possibilidades de resultar em algo interessante. Passado do papel para o micro, o fundamental é ter um arquivo do tipo bitmap (.bmp), para facilitar e agilizar ao máximo o trabalho de processamento, durante o jogo. No caso, o arquivo chama-se mapa.bmp e as dimensões do dito cujo são: 3290 pixels de largura por 2260 pixels de altura. Guarde bem esses números, porque eles aparecerão em uma série de locais. Então, crie um form novo, com as seguintes dimensões internas:
Curiosamente (coincidência, não?) essas medidas represetam 1/10 da imagem do cenário. Crie a seguir uma variável global do tipo TBitmap para receber a foto do cenário:
e a seguir defina o load do arquivo, no evento OnCreate do Form1:
Aproveite o momento (senão depois a gente esquece de fazer) e libere a memória usada para esse objeto, quando o usuário encerrar o jogo:
Neste ponto temos então o mapa carregado na memória e pronto para uso. A mecânica do jogo é bem simples: como não podemos "ver" o mapa todo de uma única vez (ele é muito grande), criamos uma espécie de "janela" de visão. Vemos portanto uma fração da imagem.
Como o avião ficará no centro da imagem, a sensação de movimento é dada pela posição em que colocamos a janela. Ou melhor, de que posição capturamos ou copiamos o conteúdo, para mostrar ao jogador. Controlamos a posição da janela através de duas varíaveis (Mx e My). Variando Mx e My, temos portanto a simulação de movimento do avião (que na verdade fica parado, sempre na mesma posição). Se somarmos valores a Mx, por exemplo, o avião "voará" para o leste e se subtrairmos, para o oeste. Da mesma forma, se somarmos valores a My, o avião voará para o sul e se subtrairmos, para o norte. Para facilitar a programação, ao invés de somarmos diretamente esses valores e criar uma enorme quantidade de linhas If... then... usamos mais duas variávels (Dx, Dy) para conter o valor de deslocamento. Com isso podemos implementar também mais quatro movimentos, sem aumentar a programação: noroeste, nordeste, sudeste e sudoeste (a 45 graus dos movimentos normais). Criamos então as devidas variáveis globais:
No evento OnCreate, do Form1, fazemos a inicialização delas:
O deslocamento do avião será de 2 em 2 pixels. Aí o leitor pergunta: mas que raio de valor 1710 é aquele? Bem, é uma posição que coloca a janela de visão exatamente sobre a cabeceira da pista de decolagem do avião do jogador. Um bom local para se começar a missão, não é? Para fazer o movimento, usamos um componente TTimer (alça System), calibrado para um Interval de 80 (milissegundos). A primeira providência é fazer o movimento:
verificamos se essa nova posição é possivel, ou seja, se não saimos do campo de visão real do mapa do cenário:
Neste caso, estamos apenas fazendo o avião "quicar" e inverter a direção do vôo. Depois isso deve ser melhorado. Em seguida transferimos a imagem sob a janela, para o canvas do Form1:
Pronto. Já temos o cenário, o avião voando e a programação que usamos até aqui foi nível jardim da infância. É óbvio que estamos muito longe que algo que possa ser tratado como um jogo comercial, concorrente da última versão do Flight Simulator, mas quer saber de uma coisa: não gastamos nem uma hora de trabalho e a sensação de ver o "avião imaginário", que fizemos deslocar-se pelo cenário, foi incrível. Agora, aproveite o que foi mostrado aqui e faça experiências com a programação. Estude como as modificações influenciam o vôo. Mude a taxa de deslocamento (Dx, Dy). Quando tiver acabado, implemento o comando de controle de vôo, no evento OnKeyDown do Form1:
Ou seja, as teclas seta para direita e esquerda controlam o giro direcional do avião. Mais experiências o aguardam, até a próxima parte. Divirta-se... |