Scrollowanie mapy.

0

Wie ktoś może np jeśli piszę grę to potrzebne jest często scrollowanie mapy. Wie ktoś może jak to zrobić jeśli tak to proszę wysłać gotowy projekt na [email protected] albo powiedzieć jak to zrobić.plis

0

trzeba obsłużyc zdarzenia systemowe myszy WM_MoveMouse(chyba)
podczepic sie podnie i robisz sobie forme więksża jak ekran, wyłączasz widoczne skrole, w funkcjach od WM_MoveMouse sprawdzasz pozycje myszy i porownujesz z wymiarami form i w zaleźnosci z ktorej strony jest mysz przesuwasz Scrollbary, ktore teraz są niewidoczne

0

Możesz też w użyć DelphiX użyć TBackgroundSprite jako tła i przesuwać jej X i Y w zależności od pozycji kursora na niej :)

0

A podacie mi moze gotowy kodzik?jak bym ladnie poprosil ;)

0

ale ja potrzebuje do delphi ;) wiem ze pascal jest podobny do pascala ale potrzebuje do delphi ;)

0

globalne zmienne:

mx,my,lx,ly : integer;
mapa : tbitmap;

OnShow formy:

mapa:=tbitmap.create;
mapa.loadfromfile('mapka.bmp');
mx:=0;
my:=0;
lx:=160;
ly:=130;
image1.canvas.brush.style:=bssolid;
image1.canvas.brush.color:=clblack;
Image1.canvas.draw(mx,my,mapa);
Image1.canvas.rectangle(lx,ly,lx+10,ly+10);

OnKeyDown Image:

if (key=vk_right) then
if (mximage1.width-mapa.width) then begin
mx:=mx-10;
image1.canvas.FillRect(image1.Canvas.ClipRect);
Image1.canvas.draw(mx,my,mapa);
Image1.canvas.rectangle(lx,ly,lx+10,ly+10);
end;

if (key=vk_left) then
if mx0 then begin
mx:=mx+10;
image1.canvas.FillRect(image1.Canvas.ClipRect);
Image1.canvas.draw(mx,my,mapa);
Image1.canvas.rectangle(lx,ly,lx+10,ly+10);
end;

if (key=vk_up) then
if (my0) then begin
my:=my+10;
image1.canvas.FillRect(image1.Canvas.ClipRect);
Image1.canvas.draw(mx,my,mapa);
Image1.canvas.rectangle(lx,ly,lx+10,ly+10);
end;

if (key=vk_down) then
if (myimage1.height-mapa.height) then begin
my:=my-10;
image1.canvas.FillRect(image1.Canvas.ClipRect);
Image1.canvas.draw(mx,my,mapa);
Image1.canvas.rectangle(lx,ly,lx+10,ly+10);
end;

0

A nie lepiej zamiast DelphiX użyć zwykłych komponentów??
Wstawiasz se dwa Image - jeden jako tło, czyli np. nazwa "World", drugi to gościu którym się chodzi, czyli np. nazwa "Gostek".
zapomniałem - jeszcze 4 Image - Down, czyli gościu jak idzie w dół, Up, czyli jak idzie w górę, Left, czyli jak idzie w lewo i Right, czyli jak idzie w prawo.
W oncreate formy dajesz

Form1.DoubleBuffered := True;

.

Wtedy w OnKeyDown tylko dajesz taki kodzik:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
v = 4;

begin
  case key of
  vk_right :
     begin
    World.Left := World.Left - v;
    Gostek.Picture := Right.Picture;
    end;
  vk_left :
    begin
    World.Left := World.Left + v;
    Gostek.Picture := Left.Picture;
    end;
  vk_down :
    begin
    World.Top := World.Top - v;
    Gostek.Picture := Down.Picture;
    end;
  vk_up :
    begin
    World.Top := World.Top + v;
    Gostek.Picture := Up.Picture;
    end;
end;
end;

I nie musisz mieć żadnych dodatkowych komponentów prócz Image.

0

(...)

wiem ze pascal jest podobny do pascala
(...)
No... Zgadza się... Nawet bardzo ;p. A wracając do tematu, to różne gotowe kody i wskazówki na ten temat widziałem... Zarówno na 4p jak i innych stronkach. Wystarczy poszukać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1