![]() |
Kalender Logik/Berchnungen
Guten Abend,
ich habe ein Anliegen das für mich ein wenig kompliziert erscheint. Also erstmal, ich möchte in ein Spiel einen Kalender einführen. Das Spiel hat eine eigene kleine Welt mit Datum. An verschiedenen Tagen gibt es verschiedene Ereignisse. Soweit nicht weiter wichtig. Bisher lief das ganze auc, nur möchte ich das Spiel komfortabler gestalten und deshab einen Kalender einführen der einen Überblick über die nächsten Monate in der Spielwelt bietet. Das Problem ist, das es eben alls recht "Fantasiereich" ist, also die Standard Kalender Komponenten wegfallen. In der Spielwelt dauert jeder Monat 30 Tage. Beim starten des Spieles, bzw. eines neuen Spielstandes, kann ausgewählt werden an welchem Datum samt Wochentag der Spieler starten möchte. Ich wollte auf eine neue Form, per Label usw. den Kalender zeichnen. Das ist auch erstmal kein Problem. Die Frage ist nur die Logik dahinter. Ruft der Spieler im Spiel den Kalender auf, kann ich anhand des Datums natürlich den aktuellen Monat problemlos berechnen. Nur wenn ich dann einen "nächster Monat" und "vorheriger Monat" Button einfüge, wird das Ganze schon komplizierter. Mein Problem sind also die Wochentage. All das würde sich durch aufwändige Schleifen berechnen lassen, keine Frage. Nur wollte ich nachfragen, ob hier vielleicht eine einfachere Methode bekant ist, auf die ich gerade nicht komme? Danke schonmal fürs Lesen *g* Gruß, Andreas |
Re: Kalender Logik/Berchnungen
Kuck mal in die Unit DateUtils rein, da gibts allerlei interessante Funktionen alle rund ums Datum.
|
Re: Kalender Logik/Berchnungen
Hab ich schon gemacht, das war meine erste Anlaufstelle.
Aber alles was ich gesehen habe, beruhte auf realen Kalenderberechnungen. Das ist ja mein problem, sonst würde ich eine beliebige Komponente abändern. |
Re: Kalender Logik/Berchnungen
Sorry, dann versteh ich nicht was Du meinst... Was sind "nicht reale Kalenderberechnungen" :gruebel:
|
Re: Kalender Logik/Berchnungen
Das sind Berechnungen die nicht auf dem uns allzubekannten Kalendersystem mit verschiede langen Monaten, Schaltjahren usw. beruhen.
Alleine dadurch das der Spieler am Anfang exaktes Startdatum und Wochentag auswählen kann, ist der Kalender schon durcheinander geworfen. Bei einem ist der 2.8.05 ein Donnerstag, bei anderen ein Sonntag. Real ist es ein Dienstag. |
Re: Kalender Logik/Berchnungen
Wenn es also lediglich ein Offset ist zu einem "realen" Kalender, ist das ja leicht zu berücksichtigen.
|
Re: Kalender Logik/Berchnungen
Naja da setzt bei mir dann aber wohl die Logik aus, weil ich nicht weiß wie ich da mit möglichst kleinem Aufwand rangehen soll. Ich hatte gehofft eine Komponente zu finden bei der ich die Monatstage begrenzen und die Daten irgendwie anpassen kann. Das war aber leider nicht der Fall. Und da ich mich vor der Entwicklung eigener Komponenten scheue, dachte ich das ich hier erst mal frage wie die Logik aussehen könnte, mit der ich an das Problem rangehe.
|
Re: Kalender Logik/Berchnungen
Zitat:
DAS ist dann nicht real. Ausserdem möchte er eine Zuordnung Datum - Wochentag frei setzen können. |
Re: Kalender Logik/Berchnungen
1. Gib den Wochentagen Nummern (z.B. 0=Montag ... 6=Sonntag)
2. Lege einen Wochentag fest (z.B. 1.1.2006=Sonntag (6)). 3. Berechne für ein Datum X die Anzahl der Tage zwischen diesem 1.1.2006 und X (also DELTA := 360 * Jahresdifferenz + 30 * Monatsdifferenz + Tagesdifferenz) 4. Der Wochentag für X ist ((DELTA + 6) mod 7) |
Re: Kalender Logik/Berchnungen
Vielen Dank, habs jetzt hinbekommen :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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