Witam!
Uprzedzam, że z większością podobnych tematów z innych forów zapoznałem się i nie rozwiązały one mojego problemu. Dokładnie chodzi mi o kolizję między dwoma Sprite'ami(jeden stoi, druga rusza się za pomocą DoMove), w której pierwszy Sprite ma możliwość pójścia w inną stronę, która nie jest zablokowana przez tego drugiego Sprite'a, który jest "powielony"(pochodzi z tablicy) i tworzy labirynt... Oczywiście opieram się na procedurze DoCollision, ale w zupełności nie mogę wymyślić, jak nasz "ludek" ma iść w stronę niezablokowaną...Mniej więcej tak moja procedura wyglądała...
procedure TGracz.DoCollision(Sprite: TSprite; var Done: Boolean);
var a2,b2:smallint;
begin
If (Sprite is TKlocek) then
begin
for a2:=1 to 16 do
for b2:=1 to 10 do
begin
if mapa[a2,b2]=true then
begin
If (Klocek[a2,b2].x+x1=Gracz.X) or (Klocek[a2,b2].X=Gracz.X+x1) or
(Klocek[a2,b2].Y+y1=Gracz.Y) or (Klocek[a2,b2].Y=Gracz.Y+y1) then
Gracz.Collisioned:=true;
end;
end;
end;
end;
Jakby mapa jest tablicą boolean, za pomocą której stworzyłem z pliku tekstowego typu 0-1 kształt mojej mapki...
Załączam także wygląd dotychczasowy wygląd mojej gry :)
Z góry dziękuje za pomoc i sorki za "informatyczne kolokwializmy" i pewnie jakieś durne błędy, ale po prostu dopiero zaczynam :)
P.S. Korzystam z delphixu bo jest najprostszy :)
- mapka.jpg (231 KB) - ściągnięć: 214