Ola pessoal!Este blog foi criado com a intencao de apresentar nosso trabalho de conclusao de disciplina, na materia Algoritmos e Programacao de Computadores 2 (APCII). Neste trabalho deveriamos criar um jogo, utilizando linguagem de programacao C e a biblioteca grafica Allegro. Nossa intencao foi criar uma nova versao de um jogo classico muito difundido na epoca em que celular era novidade: o Snake. Em nossa versao, recem-titulada: Angry Snake vamos propor um nivel de dificuldade avancado, tambem conhecido como:Mais atualizacoes nos proximos posts... /* Funcao responsavel por atribuir os valores iniciais de direcao e da matriz (cobra).*/void Reseta(int cobra[linhas][colunas], int &direcao){ direcao = 2; int i,j; for (i=0;i<linhas;i++) { for (j=0;j<colunas;j++) { cobra[i][j] = vazio; } } cobra[0][0] = 190; cobra[0][1] = 250; cobra[0][2] = 190+TAM; cobra[0][3] = 250+TAM; cobra[1][0] = 190-TAM; cobra[1][1] = 250; cobra[1][2] = 190; cobra[1][3] = 250+TAM; cobra[2][0] = 190-TAM-TAM; cobra[2][1] = 250; cobra[2][2] = 190; cobra[2][3] = 250+TAM;}/* Funcao responsavel por movimentar a matriz(cobra). Faz com que a mesma se movimente sem parar de acordo com o valor da direcao atual.*/void Movimenta(int cobra[linhas][colunas], int direcao){ if (direcao == UP && cobra[0][1] >= TelaInicio) { cobra[0][1] -= TAM; cobra[0][3] -= TAM; } if (direcao == RIGHT && cobra[0][2] <= TelaX) { cobra[0][0] += TAM; cobra[0][2] += TAM; } if (direcao == DOWN && cobra[0][3] <= TelaY) { cobra[0][1] += TAM; cobra[0][3] += TAM; } if (direcao == LEFT && cobra[0][0] >= TelaInicio) { cobra[0][0] -= TAM; cobra[0][2] -= TAM; }}/* Funcao com uma unica finalidade: criar dois numeros randomicos para x e y do bitmap comidinha, colocando a comidinha sempre em lugares aleatorios da tela.*/void Comidinha(int &x, int &y){ if (x == vazio && y == vazio) { srand(time(NULL)); x = rand() % 35; x *= TAM; x += TelaInicio; y = rand() % 25; y *= TAM; y += TelaInicio; }}/* Esta funcao tem a finalidade de limpar a ultima posicao da matriz conforme a cobra anda pra frente. [FUNCAO EXPLICADA EM DETALHES NO VIDEO]*/void Crescer(int cobra[linhas][colunas], int x){ int contador = 0; while (cobra[contador][0] != vazio) { contador++; } int aux = contador; while (contador > 0) { cobra[contador][0] = cobra[contador - 1][0]; cobra[contador][1] = cobra[contador - 1][1]; cobra[contador][2] = cobra[contador - 1][2]; cobra[contador][3] = cobra[contador - 1][3]; contador--; } if (x != vazio) { cobra[aux][0] = cobra[aux + 1][0]; cobra[aux][1] = cobra[aux + 1][1]; cobra[aux][2] = cobra[aux + 1][2]; cobra[aux][3] = cobra[aux + 1][3]; } else if (x == vazio) { cobra[aux + 1][0] = cobra[aux + 2][0]; cobra[aux + 1][1] = cobra[aux + 2][1]; cobra[aux + 1][2] = cobra[aux + 2][2]; cobra[aux + 1][3] = cobra[aux + 2][3]; }}/* Funcao responsavel por verificar o momento em que a cobra encosta nacomidinha. Neste momento o level diminui (aumenta a velocidade) e oscore ganha 10 pontos. */void Comer(int cobra[linhas][colunas], int &x, int &y, int &score, int &level){ if (cobra[0][0] == x && cobra[0][1] == y && cobra[0][2] == x+TAM && cobra[0][3] == y+TAM) { level -= 5; x = vazio; y = vazio; score += 10; }}/* Colisao(); Essa funcao tem duas verificacoes, ela verifica se