Thema: Delphi AV bei Shooter-game

Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: AV bei Shooter-game

  Alt 24. Jun 2007, 14:26
Delphi-Quellcode:
procedure TForm2.Timer2Timer(Sender: TObject);
begin
  with Image2.Picture do
    case feuer of
      0: Loadfromfile('.\flyer.bmp');
      1: Loadfromfile('.\flyer Kopie.bmp');
    end;
  case feuer of
    0: inc(feuer);
    1: dec(feuer);
  end;
end;

Tschuldigung aber so etwas Programiermüll. Alle X Millisec auf der Festplatte rumkratzen...
Lade es dir in eine Bitmap und gut ist. Meinetwegen auch in ein Image dann kanst du es einfach
mit Top/Left verschieben.

Der Fewhler kommt beim Timer2:

Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
  with Image2 do begin
    if GetAsyncKeyState(VK_left)<>0 then Left := Left-2;
    if GetAsyncKeyState(VK_right)<>0 then Left := Left+2;
    if GetAsyncKeyState(VK_Up)<>0 then Top := Top-2;
    if GetAsyncKeyState(VK_Down)<>0 then Top := Top+2;
  end;

  for i := low(Schuss) to high(Schuss) do begin
    if Schuss[i].Y > 0 then Schuss[i].Y := Schuss[i].Y-1; // sollte so aussehen
  //^^^^^^^^^^^^^^^^^^^^^^^^

    if Schuss[i].Y<20 then begin
      Move(Schuss[1], Schuss[0], Length(Schuss)); // und hier das zweite Problem
      SetLength(Schuss, Length(Schuss)-1); // das solltest du dir nochmal
    end; // genau durchdenken.

    Canvas.Ellipse(Schuss[i].X-5, Schuss[i].Y-5, Schuss[i].X+5, Schuss[i].Y+5);
  end;
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat