Ola! Sou um intermediario no pascal, e necssito muito da ajuda de alguém no snake do pascal..
Não estou pedindo codigo nenhuma, por que ja tenho ele quase pronto, o meu problema é que não consigo fazer com que quando a cobra bata na comida, ela va para a parte de tras do corpo dela, ao contrario disso ela vai para o lado...
Vou disponibilizar o codigo caso queiram compilar para testar! Agradeço desde já..
Program Cobra;const emcima = 2; embaixo = 24; direita = 74; esquerda = 6; varx,y,vidas,x2,y2,pontos,CorpoX,CorpoY,i,contador :integer;dir,esq,baixo,cima:boolean;cobra,corpo:string; procedure paredes;var p,p2:integer;begin for p := 25 to 55 do begin gotoxy (p,1) ; Write (#1) ; end ;gotoxy (6,2);writeln('*********************************************************************');for p := 3 to 24 dobegingotoxy(6,p);writeln('*');end;for p2 := 3 to 24 dobegingotoxy(74,p2);writeln('*') ;gotoxy (6,24);writeln('*********************************************************************');end;end ;Beginrandomize;x:=40;y:=13;vidas := 3;pontos := 0;x2 := random(73);y2 := random(23);cobra := #1;corpo := '*';CorpoX := 41;CorpoY := 13;repeatgotoxy(15,1);writeln('Vidas: ',vidas);gotoxy(60,1);writeln('Pontos: ',pontos);paredes;if (keypressed) thenbeginbaixo := false;cima := false;esq := false;dir := false;end;while keypressed do // Enquanto uma tecla for pressionada façacase readkey of // Caso uma tecla tal seja...#72: cima := true; // cima#77: dir := true; // direita#75: esq := true; // esquerda#80: baixo := true; // baixoend;if (cima = true) thenbeginbaixo := false;dir := false;esq := false;y := y -1;CorpoY := y + 1;CorpoX := X; end;if (dir = true) thenbeginbaixo := false;cima := false;esq := false;x := x +1;CorpoX := X -1;CorpoY := y ; end;if (esq = true) thenbegincima := false;baixo := false;dir := false;x := x -1;CorpoX := X +1;CorpoY := y ; end;if (baixo = true) thenbeginesq := false;dir := false;cima := false;y := y +1;CorpoY := y-1;CorpoX := X; end;if (x = x2) and (y = y2) then // Se colidir com a comida begin pontos := pontos +1; x2 := random(73); y2 := random(23); insert ('*',corpo,corpoX+1) ; end ; if (x2 <= esquerda) or (x2 >= direita) or (y2 <= emcima) or (y2 >= embaixo) then // Quando a comida é randomizada fora da tela ela é randomizada de novobeginx2 := random(73);y2 := random(23);end;if (x = direita) or (x = esquerda) or (y = emcima) or (y = embaixo) then // Se colidir com a parede begin vidas := vidas -1; x := 40; y := 13; end; gotoxy(x2,y2); //Comida writeln(#9); gotoxy(x,y); write(cobra); gotoxy(CorpoX,CorpoY); write(corpo); delay(100); clrscr; until (vidas = 0); End.
Deixo em anxo uma foto do problema