cresce recebe o endereco da fruta engolida cont++; //novo espaco para guardar mais um endereco de fruta engolida } gerafruta(); } }}//______________________________________________________________________________//FUNCAO DOWNvoid down(void){ if (headline==7){game_over();reinicia();return;} //se a cobra estiver na borda inferior da gameover else if (matriz[headline+1][headcol]==1 && snake[0]!=&matriz[headline+1][headcol]){game_over();reinicia();return;} //se o proximo destino colidir com corpo (menos a cauda) da cobra -> gameover else if (matriz[headline+1][headcol]==1 && snake[0]==&matriz[headline+1][headcol] && snake[0]==cresce[0] && cont>0){game_over();reinicia();return;} //caso particular em que a cobra ira crescer, assim ocorre colisao com a cauda -> gameover //else if (snake[size-2]==&matriz[headline+1][headcol]){} //se a cobra tentar retornar sobre si mesmo a jogada sera invalida - Se (proximo local = pescoco da cobra) -> jogada invalida else { headline++; //desloca uma linha para baixo 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 { if(cont==3) {score();score();} else { 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(); } }}//______________________________________________________________________________//FUNCAO LEFTvoid left(void){ if (headcol==0){game_over();reinicia();return;} //se a cobra estiver na borda inferior -> gameover else if (matriz[headline][headcol-1]==1 && snake[0]!=&matriz[headline][headcol-1]){game_over();reinicia();return;} //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){game_over();reinicia();return;} //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 esquerda 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 { if(cont==3) {score();score();} else { 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(); } }}//______________________________________________________________________________//FUNCAO RIGHTvoid right(void){