Einzelnen Beitrag anzeigen

Benutzerbild von MarquiseDeSade
MarquiseDeSade

Registriert seit: 18. Apr 2007
Ort: Mainz
55 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: 2-D Adventure programmieren

  Alt 29. Nov 2007, 18: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
  Mit Zitat antworten Zitat