O codigo esta devidamente comentado e nele o usuario tera uma nocao da animacao do jogo.//AngrySnake_Parcial/* Aqui estao todas as bibliotecas utilizadas neste codigo, que e um prototipo do jogo. */#include <allegro.h>#include <stdio.h>#include <conio.h>/* Nesta parte estao todas as macros utilizadas. Pretendemos utilizar muito delas, pois facilita na manutencao futuramente. */#define TelaX 750#define TelaY 550#define TAM 20#define Start 50#define UP 1#define RIGHT 2#define DOWN 3#define LEFT 4#define LEVEL 10/* Abaixo temos a funcao IniciaAllegro(); , que tem como intencao inicializar a biblioteca Allegro, e criar a nossa screen que sera utilizada. Algo interessante que usamos e o set_window_tittle(); , que escreve algo diferente do nome salvo do arquivo na borda superior da sua screen. */ void IniciaAllegro(){ allegro_init(); install_keyboard(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0); set_window_title("Angry Snake 1.1");}/* Esta funcao chamada Menu(); tem como finalidade mostrar uma tela estatica de como sera o menu, apenas um demonstrativo. */void Menu(){ // Chamada da funcao IniciaAllegro(); IniciaAllegro(); // Declaracao de BITMAPs utilizados na funcao Menu. BITMAP *Menu_Fundo = load_bitmap("Menu_Fundo.bmp", NULL); BITMAP *Menu_Start = load_bitmap("Menu_Start.bmp", NULL); BITMAP *Menu_Ranking = load_bitmap("Menu_Ranking.bmp", NULL); BITMAP *Menu_Help = load_bitmap("Menu_Help.bmp", NULL); BITMAP *buffer = create_bitmap(800,600); // Printa os BITMAPs na tela. draw_sprite(buffer,Menu_Fundo,0,0); draw_sprite(buffer,Menu_Start,310,300); draw_sprite(buffer,Menu_Ranking,310,370); draw_sprite(buffer,Menu_Help,300,430); blit(buffer,screen,0,0,0,0,800,600); readkey(); // Para o programa para que posamos ver a versao estatica do menu. /* Destroi os bitmaps carregados, para que nao fiquem ocupando espaco na memoria. */ destroy_bitmap(Menu_Fundo); destroy_bitmap(Menu_Start); destroy_bitmap(Menu_Ranking); destroy_bitmap(Menu_Help); destroy_bitmap(buffer); allegro_exit(); // Fecha a biblioteca grafica Allegro. }int main(){ //chama funcao menu. Menu(); printf("Esta preparado para esse desafio? \n\n !!!PRESS ENTER!!!"); getch(); //Chama funcao que inicializa o Allegro. IniciaAllegro(); // O comando clear_to_color(), neste caso clear_to_color(screen,makecol(255,255,255)); // serve para pintar toda a screen de branco. allegro_message("Se vc eh maior de 18 anos\n click OK!"); // Hahahahahaha :P //Variaveis utilizadas na main(); int dir = 2; int x = Start; int y = Start; int x2 = Start + TAM; int y2 = Start + TAM; /* Cria um BITMAP para ser utilizado como buffer, e desenha os retangulos no mesmo. */ BITMAP *buffer = create_bitmap(800,600); clear_to_color(buffer,makecol(255,255,255)); rect(buffer,Start,Start,TelaX,TelaY,makecol(0,0,0)); rectfill(buffer,x,y,x2,y2,makecol(0,0,0)); blit(buffer,screen,0,0,0,0,800,600); // Aqui se encontra o loop da animacao, while (!key[KEY_ESC]){ // onde se permanece ate que a tecla ESC // seja pressionada ou Game Over. // Define as condicoes de movimento para cada direcao. if (dir == UP && y >= Start) { y = y - TAM; y2 = y2 - TAM; } if (dir == RIGHT && x2 <= TelaX) { x = x + TAM; x2 = x2 + TAM; } if (dir == DOWN && y2 <= TelaY) { y = y + TAM; y2 = y2 + TAM; } if (dir == LEFT && x >= Start) { x = x - TAM; x2 = x2 - TAM; } /* Le as teclas e muda direcao da Snake. Nao se pode voltar nunca na direcao oposta, entao implementamos isso tambem. */ if (key[KEY_UP]) { if (dir == DOWN) { dir = DOWN; } else{dir = UP;} } if (key[KEY_RIGHT]) { if (dir == LEFT) { dir = LEFT; } else{dir = RIGHT;} } if (key[KEY_DOWN]) { if (dir == UP) {