Thema: Delphi Schießen meine ich

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3
  Alt 15. Jun 2002, 10:42
Danke schon. das sieht ja so kompliziert aus, das müßte gehen. Aaaaber...

So will ich jetzt einen Schuß mit deinem Code abfeuern, aber das klappt noch nicht:

Code:
[b]procedure[/b] TForm1.FormKeyDown(Sender: TObject; [b]var[/b] Key: Word;
  Shift: TShiftState);
[b]var[/b]
  p: PPoint;
[b]begin[/b]
  [b]case[/b] Key [b]of[/b]
    VK_LEFT: lblGun.Left := lblGun.Left - 5;
    VK_RIGHT: lblGun.Left := lblGun.Left + 5;
    VK_SPACE:
    [b]begin[/b]
      Fire;
      Timer1.Enabled := TRUE;
    [b]end[/b];
  [b]end[/b];
[b]end[/b];
In der letzten Zeile bekomme ich eine AccessViolation bveim Debuggen.
Zitat:
Code:
[b]procedure[/b] TForm1.Fire; [color=#000080][i]// Schuss abgeben[/i][/color]
[b]var[/b] p: PPoint;
[b]begin[/b]
  New(p);
  p^.x := lblGun.Left + (lblGun.Width [b]div[/b] 2);
  p^.y := lblGun.Top;
  AllShoots.Add(p); [color=#000080][i]// neuen Schuss zu Liste hinzufügen <-- HIER[/i][/color]
[b]end[/b];
Aber wie ist das, wenn ich so:
Zitat:
Code:
[b]procedure[/b] TForm1.Shoot(x, y: DWORD);
[b]var[/b]
  Shot: TShot;
[b]begin[/b]
  Shot.x := x;
  Shot.y := y;
  Form1.Refresh;
  Form1.Canvas.Draw(Shot.x, Shot.y, bullet);
[b]end[/b];
schiesse, dann werden ja jedes mal alle Schüsse gelöscht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat