Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Tag, ich möchte ein Spiel programmieren.
Ich hab als Objekt eine Eisenmiene, mit den Eigenschaften, Name, Stufe, EP und Produktion.
Ich möchte das die Eisenmiene Stündlich einen Ertrag erzeugt.
Ich hab das Objekt so initialisiert,
die Frage ist, wie ich stündlich einen Ertrag erzeugen kann. Das es zäh wird ist mir klar, ich hab bereits eine Website in Html Css Javascript und PHP programmiert. Das war auch nicht einfach =)
Du erzeugst beim Initialisieren einer neuen Instanz der Klasse Mienen eine entsprechende Variable und vergleichst diese ständig mit der Referenzvariable der Zeit. Wenn größer als, Aktion.
Instanz der Klasse X wird erzeugt -> Zeitpunkt wird festgehalten -> wenn Zeitpunkt größer Richtwert, instanz.gainProductionByOne() -> entsprechende Behandlung des Zeitpunktes, soll ja in der nächsten Stunde wieder funktionieren
public class T
{
public static void main(String[] args)
{
GregorianCalendar referenz = new GregorianCalendar();
Turm turm = new Turm(referenz.getTime());
referenz.add(Calendar.HOUR, 1);
System.out.println(String.format(Locale.GERMAN, "Referenz: %s, Turm: %s%n", referenz.toZonedDateTime().toString(), turm.getDate().toString()));
if (turm.getDate().before(referenz.getTime()))
{
System.out.print("Noch habe ich Zeit");
} else
{
System.out.println("Jetzt muss etwas passieren");
}
}
}
/** Output */
Referenz: 2018-10-17T20:10:44.274+02:00[Europe/Berlin], Turm: Wed Oct 17 19:10:44 CEST 2018
Noch habe ich Zeit
Java:
public class Turm
{
private final Date date;
public Turm(Date date)
{
this.date = date;
}
public Date getDate()
{
return this.date;
}
}
Dann musst du in deiner Gameloop, die du sicherlich hast wenn es ein Spiel werden soll, prüfen ob seit dem letzten Ertrag eine Stunde vergangen ist. Dafür würde ich dir die "neue" Time-API aus Java 8 empfehlen
Bitte nicht.. schreib deinen Konstruktor so, dass es danach ein valides Minen-Objekt gibt und du nicht erst die Attribute danach setzen musst. Dazu ist er ja da.
Außerdem solltest du die Member private machen und mit Gettern / Settern arbeiten. Stichwort: Geheimnisprinzip
Genau davon schreibe ich manchmal: die Welt bleibt nicht stehen, alles verändert sich ständig und man immer und überall dazu bereit sein muss, von Vorn anzufangen
Wobei OffsetTime für den Anwendungsfall auch problematisch sein könnte (23:30 liegt nach 0:30) - besser dürfte Instant sein, wenn auch für den Anwendungsfall mit nicht ganz so schöner API