Ir ao conteúdo
  • Cadastre-se

Kevin Spiller

Membro Pleno
  • Posts

    61
  • Cadastrado em

  • Última visita

Tudo que Kevin Spiller postou

  1. Olá pessoal estou com problema no seguinte código, eu consigo desenhar as primitivas para formar a nave porém nao consigo movimentá-las, ja usei printf para verificar se nao estou passando lixo na funçao q recebe a struct da main e esta td certo nisso. O código(nao irá funcionar pois os arquivos das músicas, imagem de plano de fundo, e as fontes das letras): #include <allegro5/allegro.h> #include <allegro5/allegro_audio.h> #include <allegro5/allegro_acodec.h> #include <allegro5/allegro_image.h> #include <allegro5/allegro_font.h> #include <allegro5/allegro_ttf.h> #include <allegro5/allegro_primitives.h> #include <stdio.h> const int LARGURA_TELA = 600; const int ALTURA_TELA = 640; const int FPS = 60; ALLEGRO_DISPLAY *janela = NULL; ALLEGRO_BITMAP *imagem = NULL; ALLEGRO_AUDIO_STREAM *musica = NULL; ALLEGRO_AUDIO_STREAM *musica2 = NULL; ALLEGRO_EVENT_QUEUE *fila_eventos = NULL; ALLEGRO_FONT *fonte = NULL; ALLEGRO_FONT *fonte2 = NULL; ALLEGRO_FONT *fonte3 = NULL; ALLEGRO_FONT *fonte4 = NULL; ALLEGRO_FONT *fonte5 = NULL; ALLEGRO_TIMER *timer = NULL; struct nave_espacial{ int x; int y; int vidas; int velocidade; int borda_x; int borda_y; int pontos; }; struct keys{ int CIMA; int BAIXO; int DIREITA; int ESQUERDA; int SPACE; }; void move_cima(struct nave_espacial nave){ nave.y -= nave.velocidade; if(nave.y < 0) nave.y = 0; } void move_baixo(struct nave_espacial nave){ nave.y += nave.velocidade; if(nave.y > ALTURA_TELA) nave.y = ALTURA_TELA; } void move_direita(struct nave_espacial nave){ nave.x += nave.velocidade; if(nave.x > 310) nave.x = 310; } void move_esquerda(struct nave_espacial nave){ nave.x -= nave.velocidade; if(nave.x < 0) nave.x = 0; } void desenha_nave(struct nave_espacial nave){ imagem = al_load_bitmap("space.jpg"); al_draw_bitmap(imagem,0,0,0); al_draw_filled_rectangle(nave.x-9,nave.y,nave.x-5,nave.y+29,al_map_rgb(255,255,0)); al_draw_filled_rectangle(nave.x+9,nave.y,nave.x+5,nave.y+29,al_map_rgb(255,255,0)); al_draw_filled_triangle(nave.x-18,nave.y+25,nave.x,nave.y-10,nave.x+18,nave.y+25,al_map_rgb(255,0,0)); al_draw_filled_rectangle(nave.x-1.51,nave.y-11,nave.x+1.54,nave.y+25,al_map_rgb(0,0,0)); al_flip_display(); } void start(){ imagem = al_load_bitmap("space.jpg"); al_draw_bitmap(imagem, 0, 0, 0); al_draw_text(fonte2, al_map_rgb(0, 0, 0), LARGURA_TELA / 2, 150, ALLEGRO_ALIGN_CENTRE, "Instructions"); al_draw_text(fonte5, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 300, ALLEGRO_ALIGN_CENTRE, "Your goals are simple:"); al_draw_text(fonte5, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 370, ALLEGRO_ALIGN_CENTRE, "- Destroy the enemy ships to gather points"); al_draw_text(fonte5, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 440, ALLEGRO_ALIGN_CENTRE, "- Defeat the boss and end the game"); al_flip_display(); al_rest(7); al_destroy_audio_stream(musica); musica2 = al_load_audio_stream("judas.ogg", 4, 1024); al_attach_audio_stream_to_mixer(musica2, al_get_default_mixer()); al_flip_display(); imagem=al_load_bitmap("space.jpg"); al_draw_bitmap(imagem,0,0,0); } void menu(){ al_attach_audio_stream_to_mixer(musica, al_get_default_mixer()); al_set_audio_stream_playing(musica, true); imagem= al_load_bitmap("space.jpg"); al_draw_bitmap(imagem, 0, 0, 0); al_destroy_audio_stream(musica2); al_draw_text(fonte2, al_map_rgb(0, 0, 0), LARGURA_TELA / 2, 150, ALLEGRO_ALIGN_CENTRE, "SPACE WAR"); al_draw_text(fonte, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 300, ALLEGRO_ALIGN_CENTRE, "Enter -> Start"); al_draw_text(fonte, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 370, ALLEGRO_ALIGN_CENTRE, "Esc -> Quit"); al_draw_text(fonte4, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 440, ALLEGRO_ALIGN_CENTRE, "Controls:"); al_draw_text(fonte3, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 500, ALLEGRO_ALIGN_CENTRE, "LEFT DOWN RIGHT UP ARROWS to move"); al_draw_text(fonte3, al_map_rgb(255, 255, 255), LARGURA_TELA / 2, 540, ALLEGRO_ALIGN_CENTRE, "SPACE to shoot"); al_flip_display(); } bool inicializar() { if (!al_init()) { fprintf(stderr,"Falha ao inicializar Allegro.\n"); return 0; } if (!al_install_audio()) { fprintf(stderr, "Falha ao inicializar áudio.\n"); return 0; } if (!al_init_acodec_addon()) { fprintf(stderr, "Falha ao inicializar codecs de áudio.\n"); return 0; } if (!al_reserve_samples(1)) { fprintf(stderr, "Falha ao alocar canais de áudio.\n"); return 0; } if (!al_install_keyboard()) { fprintf(stderr, "Falha ao inicializar teclado.\n"); return 0; } if(!al_init_image_addon()) { fprintf(stderr, "Falha ao alocar addons de imagem.\n"); return 0; } janela = al_create_display(600, 660); al_init_font_addon(); if (!al_init_ttf_addon()) { fprintf(stderr, "Falha ao inicializar add-on allegro_ttf.\n"); return -1; } if(!al_init_primitives_addon()) { fprintf(stderr, "Falha ao inicializar add-on allegro_primitves.\n"); } fonte = al_load_font("calibrib.TTF", 48, 0); fonte2 = al_load_font("impact.TTF", 70,0); fonte3 = al_load_font ("cambriab.TTF",20,0); fonte4 = al_load_font ("calibrib.TTF",40,0); fonte5 = al_load_font ("calibrib.TTF",30,0); if (!fonte) { al_destroy_display(janela); fprintf(stderr, "Falha ao carregar fonte.\n"); return -1; } if (!fonte2) { al_destroy_display(janela); fprintf(stderr, "Falha ao carregar fonte.\n"); return -1; } if (!fonte3) { al_destroy_display(janela); fprintf(stderr, "Falha ao carregar fonte.\n"); return -1; } if (!janela) { fprintf(stderr, "Falha ao criar a janela.\n"); return 0; } al_flip_display(); musica2 = al_load_audio_stream("judas.ogg", 4, 1024); if (!musica2) { fprintf(stderr, "Falha ao carregar audio.\n"); al_destroy_event_queue(fila_eventos); al_destroy_display(janela); return 0; } fila_eventos = al_create_event_queue(); timer = al_create_timer(1.0/FPS); if (!fila_eventos) { fprintf(stderr, "Falha ao criar fila de eventos.\n"); al_destroy_display(janela); return 0; } al_set_window_title(janela, "Space War"); musica = al_load_audio_stream("brb.ogg", 4, 1024); if (!musica) { fprintf(stderr, "Falha ao carregar audio.\n"); al_destroy_event_queue(fila_eventos); al_destroy_display(janela); return 0; } //al_start_timer(timer); al_register_event_source(fila_eventos, al_get_keyboard_event_source()); al_register_event_source(fila_eventos, al_get_timer_event_source(timer)); al_register_event_source(fila_eventos, al_get_display_event_source(janela)); return 1; } int main() { bool sair = 0; bool desenha = 1; int tecla = 0; struct nave_espacial nave={310,627,6,7,7,3,0}; struct keys atalhos={0,0,0,0,0}; if (!inicializar()) { return -1; } menu(); al_start_timer(timer); while (!sair) { ALLEGRO_EVENT evento; al_wait_for_event(fila_eventos, &evento); if (evento.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { sair = true; } else if(desenha == 1 && al_is_event_queue_empty(fila_eventos)) { if (evento.type == ALLEGRO_EVENT_KEY_DOWN) { switch(evento.keyboard.keycode) { case ALLEGRO_KEY_ENTER: tecla = 1; break; case ALLEGRO_KEY_ESCAPE: tecla = 2; break; case ALLEGRO_KEY_UP: atalhos.CIMA = 3; break; case ALLEGRO_KEY_DOWN: atalhos.BAIXO = 4; break; case ALLEGRO_KEY_RIGHT: atalhos.DIREITA = 5; break; case ALLEGRO_KEY_LEFT: atalhos.ESQUERDA = 6; break; case ALLEGRO_KEY_SPACE: atalhos.SPACE = true; break; } } else if(evento.type == ALLEGRO_EVENT_KEY_UP) { switch(evento.keyboard.keycode) { case ALLEGRO_KEY_UP: atalhos.CIMA = false; break; case ALLEGRO_KEY_DOWN: atalhos.BAIXO = false; break; case ALLEGRO_KEY_RIGHT: atalhos.DIREITA = false; break; case ALLEGRO_KEY_LEFT: atalhos.ESQUERDA = false; break; case ALLEGRO_KEY_SPACE: atalhos.SPACE = false; break; } } } if(evento.type == ALLEGRO_EVENT_TIMER) { desenha = 1; if(atalhos.CIMA) move_cima(nave); if(atalhos.BAIXO) move_baixo(nave); if(atalhos.DIREITA) move_direita(nave); if(atalhos.ESQUERDA) move_esquerda(nave); } if (tecla) { if (tecla) { if (tecla == 1){ start(); desenha_nave(nave); } else if (tecla == 2){ return 0; } } tecla = 0; } al_flip_display(); } al_destroy_timer(timer); al_destroy_audio_stream(musica); al_destroy_event_queue(fila_eventos); al_destroy_display(janela); al_destroy_font(fonte); return 0; } Obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!