Ich hab leider ein Problem und weiß nicht wie ich das programmiertechnisch lösen kann. Vllt. hat ja jemand von euch eine Idee.
Ich habe eine Klasse für ein Spiel programmiert, und habe die Methode buyFacility(int facility), um neue Geräte zu kaufen.
Für Geräte habe ich eine eigene Klasse geschrieben, die beschreibt ob der Spieler dieses Gerät bereits besitzt oder nicht (boolean owned) und wieviel der Preis für dieses Gerät ist (float price).
Der buyFacility Methode übergebe ich eine Konstante die ich momentant noch manuell in der Klasse des Spiels definiert habe (fortlaufende Nummer). Dann bearbeite ich die einzelnen Geräte mit einer switch Anweisung.
Facility Class sieht so aus:
Wenn ich allerdings viele Facilities habe, wird das schnell unübersichtlich. Ich möchte also jeder Facility-Instanz eine ID im Konstruktor geben. Ich habe das schon versucht mit einer final int ID. Dann habe ich noch eine static int nextID gemacht und im Konstruktor den Wert der ID mit nextID gesetzt und dann nextID erhöht.
Leider zu früh gefreut, weil switch nimmt diese Konstante nicht weil die Instanz zu der die ID gehört ja nicht existieren muss.
Wie kann man dieses Problem lösen?
Ich hab diesen Thread absichtlich nicht zu den Spielen gegeben, weil das Thema eher allgemein ist und auch Nicht-Spiele-Programmierer interessieren könnte. Wenn das falsch war dann bitte verschieben..
Ich hoffe es gibt jemanden der mir da helfen kann, weil ich weiß echt nicht weiter... ???:L
Ich habe eine Klasse für ein Spiel programmiert, und habe die Methode buyFacility(int facility), um neue Geräte zu kaufen.
Für Geräte habe ich eine eigene Klasse geschrieben, die beschreibt ob der Spieler dieses Gerät bereits besitzt oder nicht (boolean owned) und wieviel der Preis für dieses Gerät ist (float price).
Der buyFacility Methode übergebe ich eine Konstante die ich momentant noch manuell in der Klasse des Spiels definiert habe (fortlaufende Nummer). Dann bearbeite ich die einzelnen Geräte mit einer switch Anweisung.
Java:
public class spiel()
{
Facility fishing_rod = new Facility(price, true/false);
Facility hunting_rifle = new Facility(price, true/false);
public final int FACILITY_FISHING_ROD = 1;
public final int FACILITY_HUNTING_RIFLE = 2;
public void buyFacility(int facility) { //Hier wird dann die Koonstante übergeben
switch(facility) {
case FACILITY_FISHING_ROD:
//...
case FACILITY_HUNTING_RIFLE:
//...
}
}
Java:
public class Facility {
public Facility(float price, boolean owned) {
//...
}
private float price;
private boolean owned;
}
Wenn ich allerdings viele Facilities habe, wird das schnell unübersichtlich. Ich möchte also jeder Facility-Instanz eine ID im Konstruktor geben. Ich habe das schon versucht mit einer final int ID. Dann habe ich noch eine static int nextID gemacht und im Konstruktor den Wert der ID mit nextID gesetzt und dann nextID erhöht.
Leider zu früh gefreut, weil switch nimmt diese Konstante nicht weil die Instanz zu der die ID gehört ja nicht existieren muss.
Java:
case fishing_rod.ID
//...
Ich hab diesen Thread absichtlich nicht zu den Spielen gegeben, weil das Thema eher allgemein ist und auch Nicht-Spiele-Programmierer interessieren könnte. Wenn das falsch war dann bitte verschieben..
Ich hoffe es gibt jemanden der mir da helfen kann, weil ich weiß echt nicht weiter... ???:L
Zuletzt bearbeitet von einem Moderator: