&& snake[0]!=&matriz[headline][headcol+1]) {} //se o proximo destino colidir com corpo (menos a cauda) da cobra -> gameover else if (matriz[headline][headcol+1]==1 && snake[0]==&matriz[headline][headcol+1] && snake[0]==cresce[0] && cont>0) {} //caso particular em que a cobra ira crescer, assim ocorre colisao com a cauda -> gameover else if (snake[size-2]==&matriz[headline][headcol+1]) {} //se a cobra tentar retornar sobre si mesmo a jogada sera invalida - Se (proximo local = pescoco da cobra) -> jogada invalida else { headcol++; //desloca uma coluna para direita if (snake[0]==cresce[0] && cont>0) //QUANDO A COBRA DEVE CRESCER - quando a fruta engolida estiver no ultimo segmento da cobra { size++; cont--; for (i=0;i { cresce[i]=cresce[i+1]; //desloca para a esquerda o vetor de crescimento - para o caso de mais de uma fruta engolida e nao digerida } } else //QUANDO A COBRA NAO PRECISA CRESCER { *snake[0] = 0; //apaga o ultimo ponto da cobra for (i=0;i { snake[i] = snake[i+1]; //movimenta a cobra *snake[i] = 1; } } snake[size-1] = &matriz[headline][headcol]; //snake[size-1] recebe o novo endereco da cabeca da cobra *snake[size-1] = 1; //escreve 1 no endereco if (snake[size-1]==zeros[lugar]) //SE A COBRA ENGOLIR UMA NOVA FRUTA - se o endereco da fruta e da cabeca da cobra forem o mesmo { score++; cresce[cont]=zeros[lugar]; //vetor cresce recebe o endereco da fruta engolida cont++; //novo espaco para guardar mais um endereco de fruta engolida gerafruta(); } imprime(); }}int main () //Programa{ //INICIALIZA MATRIZ VETORES E VARIAVEIS i=0;j=0;k=0;score=0;cont=0;contazeros=0;lugar=0;size=0;headline=0;headcol=0; for (i=0;i<8 br="" i=""> { for (j=0;j<8 br="" j=""> { matriz[i][j]=0; zeros[k]=0; snake[k]=0; cresce[k]=0; k++; } } //E POSSIVEL USAR OS COMANDOS ABAIXO NO LUGAR DE time(NULL) //time_t t; //srand((unsigned) time(&t)); srand( (unsigned)time(NULL) ); /* srand(time(NULL)) alimenta a funcao rand com uma semente de tempo A funcao time(NULL) e calculado corresponde ao total de segundos passados desde 1 de janeiro de 1970 ate a data atual. Desta forma, a cada execucao o valor da "semente" sera diferente. */ printf("\nBem vindo ao jogo Snake - UNIVERSIDADE FEDERAL DO PARANA - RIBAS"); printf("\n\nManda ver ae nas tecla A S D W (nao aperta em outras que o jogo buga, valeu!)\n\n"); printf("\n\n---------NAO EH PARA USAR AS SETAS------------------ A S D W!!!!!)\n\n"); printf("\n\nSE ESTIVER NO CAPSLOCK NAO FUNCIONA)\n\n"); printf("\n\nPRESSIONE UMA TECLA PARA INICIAR"); matriz[5][1] = 1; snake[0] = &matriz[5][1]; matriz[5][2] = 1; snake[1] = &matriz[5][2]; matriz[5][3] = 1; snake[2] = &matriz[5][3]; headline=5; headcol=3; size=3; getch(); system("cls"); printf("\n\n"); gerafruta(); imprime(); do { //RECEBE OS COMANDOS DO TECLADO E EXECUTA AS FUNCOES switch(getch()) { case 'w': // key up up(); break; case 's': // key down down(); break; case 'd': // key right right(); break; case 'a': // key left left(); break; } printf("\n Score -> %d ",score); printf("\n tamanho da cobra -> %d ",size); printf("\n cabeca da cobra - > %d ",snake[size-1]); printf("\n rabo da cobra - > %d ",snake[0]); printf("\n Endereco da ultima fruta criada -> %d ",zeros[lugar]); printf("\n Contador de frutas engolidas e nao digeridas -> %d ",cont); printf("\n endereco da ultima fruta engolida -> %d ",cresce[0]);} while (size<30 br=""> printf("\n\nGAME OVER! THANKS FOR PLAYING"); getch(); getch(); getch();}