Fajn, tak textmode(259) pomohl, opět dík :)
Příspěvky odeslané z IP adresy 194.212.30.–
Tak jsem to zatím udělal po svém a z toho Mircosoftova si vzal část, ale zase jsem narazil na zcela hloupý problém, ke kterému nikde nevidím řešení:(
Při pohybu jezdce doleva a doprava je všechno ok, ale při pohybu nahoru a dolů se mi mezi jednotlivými články vynechává mezera jeden řádek a při nárazu do zdi taky je vše zleva doprava v pořádku, ale při nárazu nahoře nebo dole mi had "narazí" o řádek dříve, což předpokládám souvisí s mezerami mezi články. Zkoušel jsem nastavit stejnou šířku a výšku podle, změnit parametry posunu (kdyby šel posun o půl řádku, tak by bylo myslím si po problému), ale nic nepomáhá
a ještě mě napadlo: jak by se dal udělat samostatný pohyb jezdce v daném směru, který by si udržel, dokud nezmáčknu jiný směr (alá had)? Chtěl jsem dát repeat k podmínce, kde píšu daný směr a ještě delay, aby to neskočilo rovnou vpřed, ale vždycky dostanu zase exitcode 201. Program vypadá tedka takhle:
program pohyb;
uses CRT;
const left=#75;
right=#77;
up=#72;
down=#80;
esc=#27;
z=chr(219);
var b:array[1..10,1..20] of char;
i,x,j,r,s:integer;
k:boolean;
c:char;
procedure vlevo;
begin
b[r,s]:=' ';
s:=s-1;
b[r,s]:='*';
end;
procedure vpravo;
begin
b[r,s]:=' ';
s:=s+1;
b[r,s]:='*';
end;
procedure dolu;
begin
b[r,s]:=' ';
r:=r+1;
b[r,s]:='*';
end;
procedure nahoru;
begin
b[r,s]:=' ';
r:=r-1;
b[r,s]:='*';
end;
begin
clrscr;
for i:=1 to 10 do begin
b[i,1]:=z;
b[i,20]:=z;
end;
for j:=1 to 20 do begin
b[1,j]:=z;
b[10,j]:=z;
end;
r:=5;
s:=10;
b[r,s]:='*';
repeat
clrscr;
for i:=1 to 10 do begin
for j:=1 to 20 do write(b[i,j]);
writeln;
end;
c:=readkey;
if c=left then {dal jsem repeat} vlevo
{until keypressed nebo ještě until (c=right) or (c=up) or (c=down)}
else if c=right then vpravo
else if c=up then nahoru
else if c=down then dolu;
if c=z then begin
write ('konec');
readln;
end;
until c=esc;
end.
To Quiark :
kontroloval jsem to a nikde mimo pole bych operovat neměl, všechno je v rámci pole. Jinak Free Pascal debugger má, ale upřímně nevím, jak na něho :smile11:
Zdravim!
Snažím se udělat jednoduchý program pro pohyb "jezdce" (hvězdičky) v poli, který je taková předpříprava pro můj závěrečný program v Pascalu - had. Při kompilaci mi Free Pascal nehlásí žádnou chybu, ale při spouštění programu mi vyskočí hláška "exited with exit code = 201" a dále se nedostanu.
Samozřejmě jsem googlil, ale nic konkrétního a užitečného jsem nenašel, jedná se o hodně obecnou chybu, takže tady přikládám program a budu moc vděčný za jakoukoliv pomoc při řešení mého problému :)
program pohyb;
uses CRT;
const Vlevo = #75;
Vpravo = #77;
Nahoru = #72;
ESC = #27;
Dolu = #80;
z = chr(219);
var b:array[1..20,1..40] of char;
i,j,r,s:integer;
c:char;
begin
clrscr;
for i:=1 to 20 do begin
b[i,1]:=z;
b[i,40]:=z;
end;
for i:=1 to 40 do begin
b[1,j]:=z;
b[20,j]:=z;
end;
for i:=2 to 19 do
for j:=2 to 39 do begin
r:=1;
s:=2;
b[r,s]:='*';
repeat
c:=readkey;
if c=Vlevo then begin
b[r,s]:=' ';
s:=s-1;
b[r,s]:='*';
end
else if c=Vpravo then begin
b[r,s]:=' ';
s:=s+1;
b[r,s]:='*';
end
else if c=Nahoru then begin
b[r,s]:=' ';
r:=r+1;
b[r,s]:='*';
end
else if c=Dolu then begin
b[r,s]:=' ';
r:=r-1;
b[r,s]:='*';
end;
until c=ESC
end;
for i:=1 to 20 do begin
for j:=1 to 40 do write(b[i,j]);
writeln;
end;
readln;
end.