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); } }
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()); }