Essa e a tela atualizada do nosso jogo. Trabalho apresentado e (parcialmente) concluido!Foi um excelente aprendizado e estamos muito felizes com o material final, por isso temos a intencao de continuar implementando esse jogo e quem sabe um dia nao seja um projeto de sucesso como "Angry Birds".Estamos disponibilizando o nosso jogo atualizadoPara fazer o download e so clicar no link --> Baixe aqui E tambem disponibilizamos uma apresentacao explicando a funcao Crescer(); presente na TAD snake.h --> Assista aqui A TAD funcgrafica.h fica responsavel pela parte grafica do jogo, todas as funcoes que utilizam allegro estao contidas nesta TAD.void IniciaAllegro(){ allegro_init(); install_keyboard(); install_mouse(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0); set_window_title("Angry Snake 5.0"); clear_to_color(screen,BRANCO);}void FinalizaAllegro(){ allegro_exit();}/* Controla(); Funcao onde o usuario controla a direcao da matriz(cobra) atraves dos direcionais do teclado(tecla UP, DOWN, LEFT, RIGHT).*/void Controla(int &direcao){ if (key[KEY_UP]) { if (direcao == DOWN) { direcao = DOWN; }else{direcao = UP;} } else if (key[KEY_RIGHT]) { if (direcao == LEFT) { direcao = LEFT; }else{direcao = RIGHT;} } else if (key[KEY_DOWN]) { if (direcao == UP) { direcao = UP; }else{direcao = DOWN;} } else if (key[KEY_LEFT]) { if (direcao == RIGHT) { direcao = RIGHT; }else{direcao = LEFT;} }}/*Funcao responsavel por carregar os bitmaps e printa-los na tela*/void MostraJogo(int cobra[linhas][colunas], int x, int y, int score, int bestScore){ int contador = 1; BITMAP *Comidinha = load_bitmap("comidinha.bmp", NULL); BITMAP *Cabeca = load_bitmap("cabeca.bmp", NULL); BITMAP *Corpo = load_bitmap("corpo.bmp", NULL); BITMAP *buffer = load_bitmap("buffer.bmp", NULL); rect(buffer,TelaInicio,TelaInicio,TelaX,TelaY,PRETO); draw_sprite(buffer,Cabeca,cobra[0][0],cobra[0][1]); while (cobra[contador][0] != vazio) { draw_sprite(buffer,Corpo,cobra[contador][0],cobra[contador][1]); contador++; } textprintf_ex(buffer,font,640,40,PRETO,-1,"Score: %i",score); textprintf_ex(buffer,font,50,40,PRETO,-1,"Best Score: %i",bestScore); draw_sprite(buffer,Comidinha,x,y); blit(buffer,screen,0,0,0,0,800,600); destroy_bitmap(Comidinha); destroy_bitmap(Cabeca); destroy_bitmap(Corpo); destroy_bitmap(buffer);}/*funcao responsavel pela chamada de todas as funcoes do botao Start. Essa funcao inicializa o jogo assim que o usuario clica em Start.*/ void Play(){ int snake[linhas][colunas], dir, score = 0, level = 200; int x = vazio, y = vazio, exit = 1, bestScore; char nome[30]; Reseta(snake, dir); Comidinha(x, y); ConsultarBS(bestScore); while (!key[KEY_ESC] && !exit == 0 || !exit == -1) { Controla(dir); MostraJogo(snake, x, y, score, bestScore); Crescer(snake, x); Movimenta(snake, dir); Comidinha(x, y); Colisao(snake, exit); Comer(snake, x, y, score, level); rest(level); if (key[KEY_ESC]) { exit = -1; } } if (exit == 0) { allegro_message("|Game Over|"); FinalizaAllegro(); Incluir(score); system("cls"); IniciaAllegro(); } else if (exit == -1) { allegro_message("|Redirecionando p/ menu|"); }}void Ranking(){ }void Help(){ }int Quit(){ return 0;}/*Funcao que carrega as imagens utilizadas no menu, bem como suas funcionalidades.*/void Menu(){ IniciaAllegro(); BITMAP *start = load_bitmap("start.bmp", NULL); BITMAP *ranking = load_bitmap("ranking.bmp", NULL); BITMAP *help = load_bitmap("help.bmp", NULL); BITMAP *quit = load_bitmap("quit.bmp", NULL); BITMAP *buffer = create_bitmap(800,600); int opcao = 1, fim = 1; while (!key[KEY_ESC] && !fim == 0) { if (key[KEY_UP]) { if (opcao == 0) { opcao = 4; } else {opcao--;} } else if (key[KEY_DOWN]) { if (opcao == 5) { opcao = 1; } else {opcao++;} } if (opcao == 1) { draw_sprite(buffer,start,0,0); } else if (opcao == 2) { draw_sprite(buffer,ranking,0,0); } else if (opcao == 3) { draw_sprite(buffer,help,0,0); } else if (opcao == 4) { draw_sprite(buffer,quit,0,0); } if (opcao == 1 && key[KEY_ENTER]) { Play(); } else if (opcao == 2 && key[KEY_ENTER]) { //Ranking(); } else