AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ressourcen pro Sekunde generieren

Ein Thema von heel213 · begonnen am 27. Jan 2017 · letzter Beitrag vom 25. Feb 2017
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#11

AW: Ressourcen pro Sekunde generieren

  Alt 27. Jan 2017, 13:53
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 . . .
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Ressourcen pro Sekunde generieren

  Alt 27. Jan 2017, 14:27
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:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Hier kommt der Code hin der jede Sekunde ausgeführt werden soll
end;
In deinem Fall also so:
Delphi-Quellcode:
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;
5) Ein Timer ist standardmäßig angeschaltet, würde also sobald du das Formular bzw. die Anwendung öffnest anfangen den Code auszuführen.
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!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (27. Jan 2017 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#13

AW: Ressourcen pro Sekunde generieren

  Alt 27. Jan 2017, 21:23
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von heel213
heel213

Registriert seit: 23. Jan 2017
Ort: Authority
10 Beiträge
 
#14

AW: Ressourcen pro Sekunde generieren

  Alt 25. Feb 2017, 00:59
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:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Hier kommt der Code hin der jede Sekunde ausgeführt werden soll
end;
In deinem Fall also so:
Delphi-Quellcode:
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;
5) Ein Timer ist standardmäßig angeschaltet, würde also sobald du das Formular bzw. die Anwendung öffnest anfangen den Code auszuführen.
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!
Vielen vielen Dank, das war genau das, was ich brauchte!
Der, der die Company zerstören wird aka der Heelischste von allen.
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#15

AW: Ressourcen pro Sekunde generieren

  Alt 25. Feb 2017, 06:55
Ja moin, hier ist wieder euer Heel.
Und zwar will ich für das "Spiel", welches ich im Rahmen unseres Schulprojekts zusammenbasteln will eine Funktion einbauen, welche Ressourcen/s generiert, bisher habe ich mir das so vorgestellt:
Code:
Gaaanz laaanges Prograaamm
Ein ZIP-File im Anhang wäre sinnvoll, um das ganze Timing im Spiel zu erfassen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz