Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi GetTickCount (https://www.delphipraxis.net/65619-gettickcount.html)

3_of_8 19. Mär 2006 00:21

Re: GetTickCount
 
Pack ne TImageList auf die Form. Doppelklick drauf, Bilder hinzufügen.

Und dann nur noch mit der DrawMethode auf das Bild zeichnen, Codebeispiel dürfte in der OH stehen.

Daniel G 19. Mär 2006 00:22

Re: GetTickCount
 
Mal ne doofe Frage:

Wozu brauchst du das?

3_of_8 19. Mär 2006 00:30

Re: GetTickCount
 
Ich glaube, er will zu einem Löschvorgang eine Art Animation eines Mülleimers abspielen.

ontorius 19. Mär 2006 00:31

Re: GetTickCount
 
Zitat:

Wozu brauchst du das?
Ich programmier ein Jump'n'run game
---jaja, paintbox wäre besser, aber das is mir zu kompliziert---

3_of_8 19. Mär 2006 00:35

Re: GetTickCount
 
Das meinst du nicht ernst, oder?

Mit mehreren Imageboxen und dann auch noch in einzelnen Prozeduren und die Bilder aus Dateien laden?

Dass das ruckelt, glaube ich gerne.

Master_RC 19. Mär 2006 01:15

Re: GetTickCount
 
Zitat:

Zitat von ontorius
Zitat:

Wozu brauchst du das?
Ich programmier ein Jump'n'run game
---jaja, paintbox wäre besser, aber das is mir zu kompliziert---

Lol, für sowas reicht selbst eine Paintbox nicht mehr :)

Ich selbst bin auch so eilig gewesen und wollte ein Spiel proggen, aber aus Erfahrung sag ich dir:
DAT WIRD NICHTS ;)

Fang erst mit was Kleinerem an und erst, wenn du dir wirklich sicher bist, dass du dich gut auskennst (wie z. B. mit DelphiX oder dergleichen), dann mach das hier nochmal ;)

Alexander Roth 19. Mär 2006 07:37

Re: GetTickCount
 
Zitat:

Delphi-Quellcode:
procedure TForm1.trash;
var start:longint;
    i:integer;
begin
  repeat
    start:=gettickcount;
    repeat Application.ProcessMessages until GetTickCount>=start+50;
    image4.picture.LoadFromFile('.\pics\trash_open1.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+100;
    image4.Picture.loadfromfile('.\pics\trash_open2.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+150;
    image4.Picture.LoadFromFile('.\pics\trash_blum.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+250;
    image4.Picture.loadfromfile('.\pics\trash.bmp');
    inc(i);
  until i=10;
end;

Also, wozu die until i=10 ?
Dann macht er die selbe animation ja nicht 10 mal da die Zeit um ist.
Einfach so:
Delphi-Quellcode:
procedure TForm1.trash;
var start:longint;
begin
    start:=gettickcount;
    repeat Application.ProcessMessages until GetTickCount>=start+50;
    image4.picture.LoadFromFile('.\pics\trash_open1.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+100;
    image4.Picture.loadfromfile('.\pics\trash_open2.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+150;
    image4.Picture.LoadFromFile('.\pics\trash_blum.bmp');
    repeat Application.ProcessMessages until GetTickCount>=start+250;
    image4.Picture.loadfromfile('.\pics\trash.bmp');
end;
Für ein spiel ist Paintox nicht ganz so schlecht wie Image aber immer noch grotten schelcht.

nee..
da musst du direkt aufs Canvas Malen mit bitblt
Delphi-Quellcode:
BitBlt(form1.Canvas.Handle,x,y, bild.Width, bild.Height, bild.canvas.Handle,0 ,0,srccopy);
Das ist, so weit ich weis, die schnelltste Möglichkeit fürs 2d malen.

Dann musst du natürlicxh noch bei jedem ONPaint der Form neu Zeichen, damit nix flackert. :wink:

3_of_8 19. Mär 2006 10:08

Re: GetTickCount
 
Falsch. Am schnellsten gehts mit DirectX oder OpenGL. Allerdings schätze ich mich selbst jetzt mal etwas fortgeschrittener als den Ersteller dieses Threads ein, und OpenGL ist für mich noch "zu hoch".

ontorius 19. Mär 2006 11:21

Re: GetTickCount
 
So ich habs jetzt gelöst:

Delphi-Quellcode:
procedure TForm1.trash;
begin
  if gettickcount>=start+1000 then start:=gettickcount;
  if (start+50)<=gettickcount then image4.picture.LoadFromFile('.\pics\trash_open1.bmp');
  if (start+100)<=gettickcount then image4.Picture.loadfromfile('.\pics\trash_open2.bmp');
  if (start+150)<=gettickcount then image4.Picture.LoadFromFile('.\pics\trash_blum.bmp');
  if (start+1000)<=gettickcount then image4.Picture.loadfromfile('.\pics\trash.bmp');
end;
start wird dann in der Startprozedur deklariert. Also, es doch. Vielen Danke für eure Beiträge.

Airblader 19. Mär 2006 12:54

Re: GetTickCount
 
Trotzdem, nochmal:
  • Dein Spiel wird auf jedem Rechner anders schnell laufen
  • Die Performance ist die schlechteste, die du nur erzielen kannst
  • Es gibt absolut 0 Dynamik in dieser Methode (Stichwort OOP)
  • Du wirst ziemlich schnell tausende Zeilen Code haben, die sich mit wenigen lösen ließen
  • Ein paar dieser Sachen und du kommst selbst auf modernen Rechnern schnell wieder ins Stocken
  • Wenn du Delphi noch nicht so gut beherrschst, lern dir lieber kleinere Sachen an - ein Spiel ist einfach zu aufwendig und ich prophezeihe dir mit 100%iger Wahrscheinlichkeit, dass du ohne Kenntnisse und mit dieser Methode sicher kein halbwegs auch nur annähernd mittelwertiges Spiel hinbekommst ;)

=> Lass es sein und lerne Delphi erstmal grundlegend ;)

MfG, air


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.
Seite 2 von 3     12 3      

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