Ir ao conteúdo
  • Cadastre-se
Reinaldo Neto

RESOLVIDO Criar movimento no C++

Recommended Posts

Sou novo no fórum e novo na área de programação também, estou necessitando de uma ajuda para criar movimento em C++.
Consegui primeiramente fazer com que um caractere se mova apagando totalmente a tela e reimprimindo esse caractere um espaço a frente, mas meu objetivo é apagar apenas o caractere, como faço isso?

Segue abaixo o código:

 

main(){
int i=0, x=5, y=5;
char cobra='r', espaco=' ';
srand(time(NULL));
gotoxy(x,y);
do{
if(getch()=='d'){
system("cls");
x++;
gotoxy(x,y);
printf("%c", cobra);
}
else if(getch()=='s'){
system("cls");
y++;
gotoxy(x,y);
printf("%c", cobra);
}
else if(getch()=='a'){
system("cls");
x--;
gotoxy(x,y);
printf("%c", cobra);
}
else if(getch()=='w'){
system("cls");
y--;
gotoxy(x,y);
printf("%c", cobra);
}
}
while(i<1);
getch();
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É simples, é só apagar o último caractere antes de desenhar o novo.

 

Ao invés do "system("cls");", apenas imprima um espaço no ponto (x, y) anterior.

 

Também é interessante você usar o getch() apenas uma vez, no início (ou final) do loop, pois ele espera uma tecla ser pressionada quando chamado, ou seja, seu loop vai esperar até 4 teclas para chegar novamente na condição do while() ali embaixo, e também definir uma tecla para sair do loop que do jeito que está é infinito, pois a variável i não é alterada nenhuma vez. Também no caso pode usar o switch, ao invés de vários if's, mas isso só se achar melhor mesmo.

 

Pode ficar +- assim:

 

// main sempre retorna intint main() {int i=0, x=5, y=5;int ch;char cobra='r', espaco=' ';// esse não é utilizado...//srand(time(NULL));gotoxy(x,y);do {  ch = getch();  if(ch=='d'){   gotoxy(x,y);   printf("%c", espaco);   x++;   gotoxy(x,y);   printf("%c", cobra);  }  else if(ch=='s'){   gotoxy(x,y);   printf("%c", espaco);   y++;   gotoxy(x,y);   printf("%c", cobra);  }  else if(ch=='a'){   gotoxy(x,y);   printf("%c", espaco);   x--;   gotoxy(x,y);   printf("%c", cobra);  }  else if(ch=='w'){   gotoxy(x,y);   printf("%c", espaco);   y--;   gotoxy(x,y);   printf("%c", cobra);  }  else if(ch==27){ // tecla ESC   i = 1;  }} while(i<1);clrscr();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado cara! Era exatamente o que eu desejava.

Agora eu entendi também o delay que existia quando eu tentava mover o caractere usando tantos getche(), enfim muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





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

×