![]() |
AW: Ressourcen pro Sekunde generieren
Moin.
Soll das so etwas wie Zivilisation werden ? Wenn ja, wird eine Schleife nicht benötigt : Zivilisation ist ein Runden-basiertes Spiel, d.h. Ressourcen werden je Runde aktualisiert, nachdem alle Spieler (oder auch Engines) ihre Aktionen durchgeführt haben - die Resourcenänderung ist ja von den Aktionen der Spieler abhängig . . . |
AW: Ressourcen pro Sekunde generieren
Okay Timer kurz erklärt:
Du willst ein Stück Code regelmäßig ausführen? 1) Zieh dir einen Timer aufs Formular (Name "Timer1" als Beispiel) 2) Setze die Eigenschaft "Interval" auf das Zeitinterval in Millisekunden in dem du deinen Code ausgeführt haben willst. (1000 = 1x pro Sekunde) 3) Wechsel auf das "Ereignisse" Tabsheet des Timers im Objektinpektor und klicke doppelt auf die leere Fläche rechts von "OnTimer". 4)
Delphi-Quellcode:
In deinem Fall also so:
procedure TForm1.Timer1Timer(Sender: TObject);
begin // Hier kommt der Code hin der jede Sekunde ausgeführt werden soll end;
Delphi-Quellcode:
5) Ein Timer ist standardmäßig angeschaltet, würde also sobald du das Formular bzw. die Anwendung öffnest anfangen den Code auszuführen.
procedure TForm1.Timer1Timer(Sender: TObject);
begin Luxusgueter:=Luxusgueter+Luxusgueterproduktion; Stein:=Stein+Steinproduktion; Nahrung:=Nahrung+Nahrungproduktion; Gold:=Gold+Goldproduktion; label13.caption:=floattostrf(Stein,fffixed,10,0); label14.caption:=floattostrf(luxusgueter,fffixed,10,0); label15.caption:=floattostrf(Nahrung,fffixed,10,0); label16.caption:=floattostrf(gold,fffixed,10,0); label17.caption:=inttostr(einwohner); end; Wenn du das nicht willst stell die Eigenschaft "Enabled" im Objektinspektor erst mal auf false und um den Timer zu aktivieren setzt du dann einfach irgendwo im Quelltext (also da wo du ihn an/aus schalten willst) Timer1.Enabled := true (oder auch wieder auf false, falls du die Rohstoffproduktion wieder abschalten willst). HINWEIS: Mach es NICHT mit dieser Schleife und Application.ProcessMessages! Das ist auf unendlich viele Arten schlecht und falsch! |
AW: Ressourcen pro Sekunde generieren
Und nochmal kurz zu dem Problem mit den ungenauen Timern.
Die Timer sind nicht ganz genau, je kürzer das Interrval ist. Und wenn dein Programm oder der PC etwas "hängt" (ausgelastet ist), dann bleibt der Timer quasi kurz stehen. Stichwort: Interpolation Da ist es dann egal, ob der Timer alle 0.5 , 1 oder 55 Sekunden auslöst. * einfach den Zeitpunkt des Starts, bzw. des letzten Updates merken * ausrechnen wieviel Zeit seitdem vergangen ist, in Sekunden * und das mit dem WertProSekunde multipliziert dazuaddieren |
AW: Ressourcen pro Sekunde generieren
Zitat:
|
AW: Ressourcen pro Sekunde generieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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