Ir ao conteúdo
  • Cadastre-se
Gustavo Fabro

Jogo da Cobrinha em C (SN)

Recommended Posts

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?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×