segunda-feira, 9 de abril de 2007

Começando um Jogo

O Leonardo me enfogueirou para fazermos um jogo, tanto por e-mail quanto na comunidade de homebrews de DS. A idéia é fazer um jogo de tanque, tipo o Combat do Atari com mais gráfico e cenário maior, mas a idéia é que dê para jogar por wifi.

Então surgiu a idéia de ir desenvolvendo esse jogo e ir explicando a programação dele aqui. Nada melhor para aprender do que a prática.

Movimento básico do jogo: o direcional controla o tanque nas 8 direções. A stylus controla o canhão nos 360 graus.

Primeiro passo: como fazer o jogo saber qual o ângulo em que a stylus está apontando?
A PALib trata ângulos com valores entre 0 e 511 ao invés de 0 a 359. 0=0 graus, 128=90 graus, 256=180 graus e 384=270 graus. Tanto para rotacionar sprites quanto para detectar um ângulo, a informação é sempre em 9 bits (valores de 0 a 511).

Vamos fazer um programa para testar se isso é possível, medindo o ângulo do toque da stylus em relação ao centro da tela.

// Includes
#include <PA9.h> // Include for PA_Lib
// Function: main()
int main(int argc, char ** argv)
{
  s16 angulo=0;
  PA_Init(); // Initializes PA_Lib
  PA_InitVBL(); // Initializes a standard VBL
  PA_InitText(1,0);
  PA_SetTextCol(1,31,31,31);
  // Infinite loop to keep the program running
  while (1)
  {
    if (Stylus.Held) {
      angulo=PA_GetAngle(127,95,Stylus.X,Stylus.Y);
      PA_OutputText(1,0,4,"Angulo a partir do centro: %d   ",angulo);
    }
    PA_WaitForVBL();
  }
  return 0;
} // End of main()


O que o programa faz:
  • Inicializa a variável angulo em 0
  • Inicializa a PALib e define o texto na tela 1 na cor branca
  • começa o loop infinito
  • verifica se a stylus está apertada
  • calcula o angulo entre o centro da tela (coordenada 127,95) e a posição da stylus
  • escreve esse angulo
  • termina o loop, voltando para o início dele (é infinito).

4 comentários:

Leonardo Zimbres disse...

Ok. Vou só arrumar um emulador de atari e ver como esse combat era.

Guilherme - Homebrew Maker disse...

Era aquilo que tu me mandaste por e-mail só que ele atirava para o lado que o tanque estava andando.

Unknown disse...

Nossa, mto prático usar :)
Apesar de que ainda não intendo alguns parâmetros hehe mais já estou pegando o jeito.
Se quiserem ajuda nesse jogo podem contar comigo, eu intendo um pouco de programação de jogos (bem básico, mexi um pouco com Multimedia Fusion e Game Maker) e agora estou trabalhando com programação (ASP).

Abraços e continue com as matérias, porque elas estão ótimas.

Guilherme - Homebrew Maker disse...

Rodolpho, dá uma olhada nos links, ali tem um link para o meu outro blog, onde eu fui colocando a minha experiência em aprender a PALib. Ali tem os links para o tutorial da PALib e também para a documentação da PALib. Na documentação tu vais ver quais são os diversos parâmetros.