Вот мой код:
Program Snake;
uses crt;
const
xn=1; {предел экрана слева}
xx=80; {предел экрана справа}
yn=1; {верхний предел экрана}
yx=25; {нижний предел экрана}
H='0'; {голова змеи}
dt=400; {задержка}
var
x:integer=xx div 2; {начальное расположение змеи}
y:integer=yx div 2;
vx:integer=-1; {начальное направление змеи}
vy:integer=0;
xe:integer=15; {начальные координаты яблока}
ye:integer=15;
var
c:char;
begin
randomize;
clrscr;
gotoxy(xe,ye); {рисуем первое яблоко}
write ('$');
while (x>=xn) and (x<=xx) and (y>=yn) and (y<=yx) do {обозначаем границы экрана}
begin
GoToXY(x,y); {рисуем новое положение символа}
write(H);
Delay(dt); {задержка, иначе символ будет бегать быстро}
if keypressed then {если нажата клавиша читаем ее}
begin
c:=readkey;
case c of {если это был управляющий символ, изменяем движение}
'w':begin vx:=0; vy:=-1 end; {изменяем движение на движение вверх}
's':begin vx:=0; vy:=1 end; {изменяем движение на движение вниз}
'a':begin vx:=-1; vy:=0 end; {изменяем движение на движение влево}
'd':begin vx:=1; vy:=0 end; {изменяем движение на движение вправо}
end;
end;
gotoxy(x,y);
write(' ');
inc(x,vx); {вычисляем новое положение змейки}
inc(y,vy);
if (x=xe) and (y=ye) then {если координаты змеи совпадают с координатами яблока}
begin
xe:=random(75); {рисуем новое яблоко, случайным образом}
ye:=random(20);
gotoXY(xe,ye);
write('$');
end;
end;
end.
пока не хватает знаний, чтоб сделать хвост змее, который растет, когда змея съедает яблоко...
надеюсь на вашу помощь