Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX "Schussproblem" (https://www.delphipraxis.net/15738-delphix-schussproblem.html)

Spurius 7. Feb 2004 17:38

Re: DelphiX "Schussproblem"
 
Hallo,
danke, aber ich hab nóch ein paar Fragen:
1.Wo kommt der Code zum Einsatz?
Delphi-Quellcode:
procedure TMG.DoMove(MoveCount: Integer);
begin
  inherited;
  case Car.Ausrichtung of
    auLeft: X := X - 3;
    auRight: X := X + 3;
    auUp: Y := Y - 3;
    auDown: Y := Y + 3;
  end;
 
  if (X > Form1.DXDraw1.Width) or (X < 0) then
    Dead;
  if (Y > Form1.DXDraw1.Height) or (Y < 0) then
    Dead;
end;
2. Und der?
procedure TCar.Schiessen;
begin
Dec(FMunitionMG);
with TMG.Create(engine) do
begin
x := self.X;
y := self.Y;
end;
end;
[/delphi]
3. Bei mir war das Problem doch, dass ich den schuss nur einmal erzeugen konnte, solabge der alte noch existiert. Wie hast du das konkret umgangen?

Gruß
Spurius

Dagon 8. Feb 2004 14:12

Re: DelphiX "Schussproblem"
 
Zitat:

Zitat von Spurius
1.Wo kommt der Code zum Einsatz?
Delphi-Quellcode:
procedure TMG.DoMove(MoveCount: Integer);
begin
  inherited;
  case Car.Ausrichtung of
    auLeft: X := X - 3;
    auRight: X := X + 3;
    auUp: Y := Y - 3;
    auDown: Y := Y + 3;
  end;
 
  if (X > Form1.DXDraw1.Width) or (X < 0) then
    Dead;
  if (Y > Form1.DXDraw1.Height) or (Y < 0) then
    Dead;
end;

DoMove ist eine Methode die alle Klassen, die von TSprite abgeleitet sind, erben. Darum schau dir
mal die Implementierung der Klassen TSprite und TImageSprite und insbesondere die Methoden TSprite.DoMove, TImageSprite.DoMove udn TSprite.Move an.



Zitat:

Zitat von Spurius
2. Und der?
procedure TCar.Schiessen;
begin
Dec(FMunitionMG);
with TMG.Create(engine) do
begin
x := self.X;
y := self.Y;
end;
end;

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_SPACE then
  begin
    if Car.Munition > 0 then
      Car.Schiessen; <==== HIER
  end;
end;

Zitat:

Zitat von Spurius
3. Bei mir war das Problem doch, dass ich den schuss nur einmal erzeugen konnte, solabge der alte noch existiert. Wie hast du das konkret umgangen?

Hmm, das ist schwer zu sagen. Ich habe eigentlich DelphiX nur "richtig" eingesetzt, dann geht das auch.

Spurius 8. Feb 2004 14:23

Re: DelphiX "Schussproblem"
 
Wie hast du das gemacht, dass mehere Instanzen von dem Schuss gleichzeitig existieren konnten?

Spurius 23. Feb 2004 14:37

Re: DelphiX "Schussproblem"
 
Mich würd die Lösung immermoch interessieren.
Wie kann ich mehrere Instanzen eines Objects erzeugen, die gleichzeitig existieren, aber nicht aus einem array oder so.

Dagon 23. Feb 2004 17:53

Re: DelphiX "Schussproblem"
 
Da ich gefragt wurde ob ich noch zeigen könnte, wie man das Problem mit dem Schuss (Konkret: dass der Schuss Richtung wechselt wenn der Car die Richtung wechselt) lösen könnte, habe ich hier noch kurz eine kleine Lösung:

1. Im Private-Teil der Klasse TMG die Varible FRichtung: TAusrichtung; deklarieren.
2. TCar.Schiessen um eine Zeile erweitern:
Delphi-Quellcode:
procedure TCar.Schiessen;
begin
  Dec(FMunitionMG);
  with TMG.Create(FOrm1.DXSpriteEngine1.Engine) do
  begin
    FRichtung := self.FAusrichtung; // <== diese Zeile ist neu!
    x := self.X;
    y := self.Y;
  end;
end;
3. In der DoMove Methode von TMG die Zeile
Delphi-Quellcode:
case Car.Ausrichtung of
durch
Delphi-Quellcode:
case FRichtung of
ersetzten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.
Seite 2 von 2     12   

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