Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mauern als hinderniss (https://www.delphipraxis.net/86992-mauern-als-hinderniss.html)

schrimm 21. Feb 2007 21:13


Mauern als hinderniss
 
Also ich schäme mich schon fast sowas zu fragen. (hab schon gesucht, aber nix gefunden)
Ich hab so eine Art spiel, wo man durch pfeiltasten ein Tanimate durch eibne "welt" steuern kann.
nun sind da ein paar mauern, ich weiß aber nicht, wie ich die sinnvoll als hindernisse machen kann.
danke schonmal :-D

Namenloser 21. Feb 2007 21:33

Re: Mauern als hinderniss
 
Ein tipp: es ist nicht sinnvoll, sowas mit tanimate bzw. der vcl zu machen. setz dich lieber mit tcanvas auseinander und zeichne dann selber. (Zu tCanvas gibt es glaub ich auch tutorial auf dsdt.info, ansonsten mal in die delphi hilfe gucken und rumprobieren)

Zum thema Welt: ich würd das mit einem 2d-array machen. hab jetzt aber keine zeit, da viel drüber zu schreiben, ich schreib vllt. morgen noch was dazu...

schrimm 22. Feb 2007 13:06

Re: Mauern als hinderniss
 
Aslo ich hab jetzte mal bisschen rumprobiert, es ist sogar was rausgekommen:
Delphi-Quellcode:
unit Uhaupt;
...
type
  mauerna= array [1..2,1..2,1..2]of integer;
  davida = array [1..2,1..2] of integer;
...

var
  Form1: TForm1;
  mxy : mauerna;
  dxy : davida;
  taste: char;

implementation

{$R *.DFM}
procedure hindernis;
 var k:integer;
 begin
  k:=1;
  for k:=1 to 2 do
   begin
     if ((dxy[1,2]>=mxy[k,1,1])and(dxy[1,1]<=mxy[k,1,2]))and//x-werte vergleichen
        ((dxy[2,2]>=mxy[k,2,1])and(dxy[2,1]<=mxy[k,2,2]))  //y-werte vergleichen

     then
   begin
    case taste of
    'u': form1.im.top:=Form1.im.top+2;
    'd': form1.im.top:=form1.im.top-2;
    'l': form1.im.left:=form1.im.left+2;
    'r': form1.im.left:=form1.im.left-2;
    end;//ende case of
   end;//ende if-then
  end;//ende for..do
end;//ENDE hindernis

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

[... die bewegung des männels]
 

  //arrays
   //[a,b,c] a=mauernnummer b=x/y-wete c=anfangs/endwert
mxy [1,1,1]:=Image1.left;
mxy [1,1,2]:=Image1.left+40;
mxy [1,2,1]:=Image1.top;
mxy [1,2,2]:=Image1.top+34;

mxy [2,1,1]:=Image2.left;
mxy [2,1,2]:=Image2.left+40;
mxy [2,2,1]:=Image2.top;
mxy [2,2,2]:=Image2.top+34;

 //[1,x]=x-werte
 //[2,x]=y-werte

dxy [1,1]:=Im.left;
dxy [1,2]:=Im.left+38;
dxy [2,1]:=Im.top;
dxy [2,2]:=Im.top+73;
//array ende
hindernis;
end;
end.
Macht das sinn, das so zu machen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz