AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX "Schussproblem"
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX "Schussproblem"

Ein Thema von Spurius · begonnen am 3. Feb 2004 · letzter Beitrag vom 23. Feb 2004
Antwort Antwort
Seite 2 von 2     12   
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#11

Re: DelphiX "Schussproblem"

  Alt 7. Feb 2004, 16:38
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
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#12

Re: DelphiX "Schussproblem"

  Alt 8. Feb 2004, 13:12
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 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 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.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#13

Re: DelphiX "Schussproblem"

  Alt 8. Feb 2004, 13:23
Wie hast du das gemacht, dass mehere Instanzen von dem Schuss gleichzeitig existieren konnten?
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#14

Re: DelphiX "Schussproblem"

  Alt 23. Feb 2004, 13:37
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.
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#15

Re: DelphiX "Schussproblem"

  Alt 23. Feb 2004, 16:53
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
case Car.Ausrichtung of durch
case FRichtung of ersetzten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 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