Witam.Robię taką małą,prostą gierke.Napisałem kod,ok wszystko działa.Ale w grze chodzi o poruszanie się gwiazdką w labiryncie.Żeby dodać labirynt itd nie ma sprawy.Problem z tym żeby gwiazdka nie mogła przejść przez ścianki labiryntu.Pomóżcie!
uses Crt;
var znak:char;
x,y : byte;
procedure a (dx, dy : integer); {procedura do poruszania gwiazką tz. gdzie możę iść a gdzie nie}
begin
if (x+dx>=1) and (x+dx<=80) and
(y+dy>=1) and (y+dy<=24) then
begin
gotoxy(x, y); write(' ');
x:=x+dx; y:=y+dy;
gotoxy(x, y); textcolor(lightgreen); write('*');
end;
else
begin
end
end;
begin
clrscr;
gotoxy(1, 25);
textcolor(yellow);
write('Sterujesz w,s,a,d,q,e,z,c.Jeli skoäczye zabaw© nacinij p.');
gotoxy(50, 13);
write('|');
x:=40; y:=12;
a (0, 0);
repeat
znak:=readkey;
case Upcase(znak) of
'W': a (0, -1);
'S': a (0, 1);
'A': a (-1, 0);
'D': a (1, 0);
'E': a (1, -1);
'Q': a (-1, -1);
'Z': a (-1, 1);
'C': a (1, 1);
else
begin
end;
end;
until Upcase(znak)='P';
end.
Próbowałem dodać w proceurze a to:
uses Crt;
var znak:char;
x,y : byte;
procedure a (dx, dy : integer);
begin
if (x+dx>=1) and (x+dx<=80) and
(y+dy>=1) and (y+dy<=24) and
(x+dx<>50) and (y+dy<>13) then
begin
gotoxy(x, y); write(' ');
x:=x+dx; y:=y+dy;
gotoxy(x, y); textcolor(lightgreen); write('*');
end;
else
begin
end
end;
begin
clrscr;
gotoxy(1, 25);
textcolor(yellow);
write('Sterujesz w,s,a,d,q,e,z,c.Jeli skoäczye zabaw© nacinij p.');
gotoxy(50, 13);
write('|');
x:=40; y:=12;
a (0, 0);
repeat
znak:=readkey;
case Upcase(znak) of
'W': a (0, -1);
'S': a (0, 1);
'A': a (-1, 0);
'D': a (1, 0);
'E': a (1, -1);
'Q': a (-1, -1);
'Z': a (-1, 1);
'C': a (1, 1);
else
begin
end;
end;
until Upcase(znak)='P';
end.
A przy okazji mam jeszcze takie pytanie.Zrobiłem tak żeby trzeba było zjadać inne gwiazdki.Spoko działa.ALE jak zrobić,że jak się zje ostatnią na ekranie to wczytuje następny lev?