Registriert seit: 18. Apr 2007
Ort: Mainz
55 Beiträge
Turbo Delphi für Win32
|
Re: 2-D Adventure programmieren
29. Nov 2007, 19:25
Hallo
Das Adventure nimmt allmählich Form an, auch wenn sicherlich einige Sachen sehr umständlich programmiert worden sind Aber Übung macht ja bekanntlich den Meister.
Nun zu einem neuen Problem.....
Ich lasse zwei gelbe Kreise folgendermaßen durch das Erdgeschoss meiner "map" laufen:
Delphi-Quellcode:
rocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin{of procedure}
with Image1.Canvas do
begin{of controls}
case Key of
VK_LEFT: begin
pen.color:=cl3DLight;
brush.color:=cl3DLight;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Grosx1:=Grosx1-5;
Grosx2:=Grosx2-5;
Kleinx1:=Kleinx1-5;
Kleinx2:=Kleinx2-5;
pen.color:=clblack;
brush.color:=clyellow;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Key := 0;
end;
VK_RIGHT: begin
pen.color:=cl3DLight;
brush.color:=cl3DLight;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Grosx1:=Grosx1+5;
Grosx2:=Grosx2+5;
Kleinx1:=Kleinx1+5;
Kleinx2:=Kleinx2+5;
pen.color:=clblack;
brush.color:=clyellow;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Key := 0;
end;
VK_UP: begin
pen.color:=cl3DLight;
brush.color:=cl3DLight;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Grosy1:=Grosy1-5;
Grosy2:=Grosy2-5;
Kleiny1:=Kleiny1-5;
Kleiny2:=Kleiny2-5;
pen.color:=clblack;
brush.color:=clyellow;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Key := 0;
end;
VK_DOWN: begin
pen.color:=cl3DLight;
brush.color:=cl3DLight;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Grosy1:=Grosy1+5;
Grosy2:=Grosy2+5;
Kleiny1:=Kleiny1+5;
Kleiny2:=Kleiny2+5;
pen.color:=clblack;
brush.color:=clyellow;
ellipse(Grosx1,Grosy1,Grosx2,Grosy2);
ellipse(Kleinx1,Kleiny1,Kleinx2,Kleiny2);
Key := 0;
end;{of controls}
end;{of procedure}
Nun würde ich gern eine Kollisionskontrolle benutzen, damit die zwei Kreise nicht überall langlaufen können. Ihr müsst euch das so vorstellen, dass ich die Draufsicht einer Schule (Erdgeschoss) mit Canvas gezeichnet habe und nun nicht will, dass die Spielfigur die Wände (Rectangles) übermalt. Sprich, wie realisiere ich es, dass die Spielfigur nicht über ein angegebenen Rechteck "drüber" laufen kann.
Gruß
Tobias
|