Вот решения для текстового режима
Код
uses crt;
var ch:char;
i,j:byte;
begin
clrscr;
i:=1;
j:=1;
while ch<>#27 do
begin
ch:=readkey;
gotoxy(i,j);
write(' ');
if (ch=#77) and (i<80) then inc(i);
if (ch=#75) and (i>1) then dec(i);
if (ch=#80) and (j<25) then inc(j);
if (ch=#72) and (j>1) then dec(j);
gotoxy(i,j);
write('*');
end;
end.
Esc для выхода
А если хочешь избавится от курсора то используй эту процедуру
Код
procedure Hide_Cursor;
var Regs :Registers;
begin
with Regs do begin
Ah:=1;
Ch:=$20;
Cl:=0;
Bh:=0;
Intr($10,Regs);
end;
end;