void cria_tanque(Jogo* jogo){
	jogo->tanque = inicializa_tanque(LARGURA_INICIAL/2, ALTURA_INICIAL/8 * 7);
	if(!jogo->tanque){
		al_show_native_message_box(jogo->display, "Erro", "Erro", "Falha ao iniciar imagem do tanque.", "OK", ALLEGRO_MESSAGEBOX_ERROR);
		destroi_jogo(jogo);
		exit(1);
	}
}
Exemple #2
0
void inicializa_jogo( Jogo* jogo, int x, int y, int largura, int altura ) {
   ALLEGRO_DISPLAY *display = NULL;

   al_set_new_window_position( x, y );
  
   if(!al_init()) {
      fprintf(stderr, "Falha ao inicializar o Allegro!\n");
      exit(-1);
   }
   
   if (!al_init_primitives_addon()) {
     fprintf(stderr, "Falha ao inicializar add-on de primitivas.\n");
     exit(-1);
   }
   
   if (!al_init_image_addon()) {
     fprintf(stderr, "Falha ao inicializar add-on de imagens.\n");
     exit(-1);
   }
   
   display = al_create_display( largura, altura );
   if(!display) {
      fprintf(stderr, "Falha ao criar o display!\n");
      exit(-1);
   }
   
   if (!al_install_keyboard())
    {
        fprintf(stderr, "Falha ao inicializar o teclado.\n");
        exit(-1);
    }
    
    jogo->fila_eventos = al_create_event_queue();
    if (!jogo->fila_eventos)
    {
        fprintf(stderr, "Falha ao criar fila de eventos.\n");
        exit(-1);
    }
   
   jogo->altura = altura;
   jogo->largura = largura;
      
   for( int i = 0, x = (jogo->largura / 4 - TAMANHO_BUNKER) / 2; 
        i < 4; 
        i++, x += jogo->largura / 4 ) {
     inicializa_bunker( &jogo->bunker[i], x, 360 );
   } 
   
   inicializa_tanque( &jogo->tanque, jogo->largura/2, 475, 0, jogo->largura );

   inicializa_zbuffer( &jogo->zbuffer, display, jogo->altura, jogo->largura, 
                       jogo->bunker, &jogo->tanque );

  al_register_event_source(jogo->fila_eventos, al_get_keyboard_event_source());
}