![]() |
AV bei Shooter-game
Liste der Anhänge anzeigen (Anzahl: 1)
Tach erstmal,
ich sitze also vor meinem Computer, versuche mich an einem Shooter und ahne nichts böses. :mrgreen: :coder: Ich versuchs mal, gebe 20 Schüsse ab und ernte etwas, das einer AV ähnelt und um mir zu zeigen, was nicht stimmt, zeigt Delphi mir die "böse" Stelle im compillierten Code :pale: , naja ich bin kein Computer deswegen möchte ich euch fragen, was nicht stimmt. Steuerung: Pfeiltasten und Leertaste :dp: |
Re: AV bei Shooter-game
Ohne den entsprechenden Code, werden wir dir wahrscheinlich nicht helfen können. Wenn eine AV auftritt, wirst du irgendwo auf ein nicht mehr existierendes Objekt zugreifen oder dergleichen.
Chris [edit]Sorry, hab übersehen, dass auch Code dabei ist. Mfg, CalganX[/edit] |
Re: AV bei Shooter-game
der code liegt bei...
|
Re: AV bei Shooter-game
---------------------------
shogame --------------------------- Cannot open file "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Eigene Bilder\flyer.bmp". Das System kann die angegebene Datei nicht finden. --------------------------- OK --------------------------- Vllt. sollte man auch alles mitliefern wenn man die exe starten soll ;) Habe da so nicht viel Ahnung aber sollten nicht vllt die Images oder sonstiges was das Game laden sollte in Game Ordner liegen? Die AV kam mir eindeutig zu heufig. [Edit]
Delphi-Quellcode:
Pfadangaben stimmen nicht so richtig. Die exe und der Source sind auf meinem Desktop.
0: Loadfromfile('.\flyer.bmp');
1: Loadfromfile('.\flyer Kopie.bmp'); |
Re: AV bei Shooter-game
:oops: ich hab noch mal editiert jetzt müsste alles gehen, es ist mir auch schon aufgefallen :oops:
die bilder sind jetzt dabei... |
Re: AV bei Shooter-game
Nicht so ganz, die AV kommt immernoch, er sucht immernoch die Images im falschen Ordner.
--------------------------- shogame --------------------------- Cannot open file "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Eigene Bilder\flyer.bmp". Das System kann die angegebene Datei nicht finden. --------------------------- OK ---------------------------
Delphi-Quellcode:
[Edit] Achja ich bin nicht als Admin angemeldet. :D
0: Loadfromfile('.\flyer.bmp');
1: Loadfromfile('.\flyer Kopie.bmp'); ersetzen :) 0: Loadfromfile('flyer.bmp'); 1: Loadfromfile('flyer Kopie.bmp'); |
Re: AV bei Shooter-game
Grundsätzlich empfiehlt es sich bei sowas, den gesamten Pfad anzugeben:
Delphi-Quellcode:
Wenn man es richtig schön machen will, lagert man den Pfad in eine Funktion aus:
LoadFromFile( IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'flyer.bmp' );
Delphi-Quellcode:
Chris
LoadFromFile( ImagePath('flyer.bmp') );
{ ... } function ImagePath(AFileName: string); begin Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + AFileName; end; |
Re: AV bei Shooter-game
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; |
Re: AV bei Shooter-game
okay, ich hab das mit den bildern jetzt auskommentiert und werde das mit der imagelist machen wenn das andere klappt.
Zitat:
Zitat:
hat also irgendjemand ne idee wie ich das hinbiegen soll? :spin2: |
Re: AV bei Shooter-game
ähäm... :mrgreen: nur zur info, will ja niemanden belästigen, die frage ist noch nicht beantwortet... :stupid:
|
Re: AV bei Shooter-game
Hi,
ein Paar Sachen habe ich noch gefunden:
Delphi-Quellcode:
Edit: Oder mit else:
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 := high(Schuss) downto low(Schuss) do begin //for i := low(Schuss) to high(Schuss) do begin Schuss[i].Y := Schuss[i].Y-1; if Schuss[i].Y<20 then begin if Length(Schuss)> 1 then Move(Schuss[1], Schuss[0], Length(Schuss)* SizeOf(TPoint)-SizeOf(TPoint)); //Move(Schuss[1], Schuss[0], Length(Schuss)); SetLength(Schuss, Length(Schuss)-1); end; if i<= high(Schuss) then Canvas.Ellipse(Schuss[i].X-5, Schuss[i].Y-5, Schuss[i].X+5, Schuss[i].Y+5); end; end;
Delphi-Quellcode:
end
else //if i<= high(Schuss) then Canvas.Ellipse(Schuss[i].X-5, Schuss[i].Y-5, Schuss[i].X+5, Schuss[i].Y+5); |
Re: AV bei Shooter-game
ja danke probier ich mal aus!
aber ich verstehe nicht: Zitat:
|
Re: AV bei Shooter-game
hi,
anscheinend die Anzahl von Bytes :wink:. Achja, und soweit ich weiß, muss man bei move darauf achten, dass es sich um ein packed array handelt, weil das Array vom Speichermanager sonst unter umständen zerstückelt in den Arbeitsspeicher geschoben wird. Move funktioniert aber nur, wenn die Daten "in einem Guss" da liegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
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-2025 by Thomas Breitkreuz