Ir ao conteúdo
  • Cadastre-se

Jogo da Cobrinha em C (SN)


Gustavo Fabro

Posts recomendados

Galera é o seguinte, estava pensando em bola um jogo da cobrinha, famoso snake, achei uns modelos em C bem legais, mas comecei a fazer o meu do zero, com algumas idéias pegas de outros, uma dessas idéias é que ta me dando problema. Quando a cobra encontra a "maça", não estou conseguindo fazer com que seu tamanho aumente corretamente.  A forma de apagar o rastro é imprimir um " " (em branco) na posição anterior todas as vezes. Até é simples dessa forma, consegui fazer de boa, para o a cobra (que é um ''x") caminhei, porém quando encontra a "maça" não consigo fazer com que aumente seu tamanho de forma correta.  Meio complicado de explicar mas o código está ai:

 

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
 
void gotoxy(int x, int y)
{
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y});
}   
 
main (){
int x[1760] = {8,8}, y[1760] = {8,8}, tecla, mx, my, t=1, i;
    srand(time(NULL));
mx = 1+(rand() % 79);
my = 7+(rand() % 15);
gotoxy(mx, my);
printf ("%c", 1);
 
while(1){
 
tecla = getch();
for(i=t;i>0;i--){
x=x[i-1];
y=y[i-1];
}
if(tecla==77)x[0]++;
if(tecla==75)x[0]--;
if(tecla==72)y[0]--;
if(tecla==80)y[0]++;
 
 
gotoxy(x[t], y[t]);
printf (" ");
 
if(mx==x[0]&&my==y[0]) {
mx = 1+(rand() % 78);
my = 7+(rand() % 15);
gotoxy(mx, my);
printf ("%c", 1);
t++;
}
 
gotoxy(x[0], y[0]);
printf ("x"); 
}
 
}
 
Este é um esboço, sem a interface que fiz de menu e tal, somente para testar o tamanho da cobra, a variável "t" é que armazena este tamanho, porém o tamanho só atualiza quando passo duas vezes pela maça. Qual o problema?
Link para o comentário
Compartilhar em outros sites

a posição que voce deveria colocar o espaço seria a posiçãoatual - t ou +t

por exemplo,voce poderia declarar uma variavel fora do while chamada "v"

//Apagando as colunasif(tecla==77)        {            x[0]++;            v = -t;        }        else if(tecla==75)        {            x[0]--;            v = +t;        }//depois chama a função gotoxy(x[0]+v, y[0]);printf (" ");

o código tambem tem coisas sem sentido..pegar pedaços de outros códigos é algo muito ruim

Link para o comentário
Compartilhar em outros sites

Obrigado, irei tentar quando tiver em casa. Não copiei pedaços, as partes da onde tirei a ideia eu mesmo fui fazendo conforme ia entendendo obviamente, como na na ideia do for para limpar o rastro com o "t" para armazenar o tamanho, porém infelizmente não havia funcionado. Algumas coisas ai estão sem sentido porque o código não está completo. Valeu

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...