xparet0209
Ensign
- Registriert
- Okt. 2007
- Beiträge
- 180
Hi lieber CB'ler
ich habe ein Problem bei folgender Sache. Ich habe eine Klasse GameState:
und eine weiter Klasse Tower die ein paar int Werte beinhaltet und ein paar Methoden um diese int Werte zu verändern.
Ihr könnt euch das Spiel Manhattan vorstellen. Man hat ein Spielfeld mit verschiedenen Städten. Jede Stadt hat wiederum verschiedene Bauplätze (Slots), auf denen Türme errichtet werden können. Man kann nun in einer bestimmten Stadt auf einem Bauplatz einen Turm gewisser Höhe bauen-
Bei folgenden Aufruf verstehe ich allerdings nicht was passiert:
In der ersten Zeile wird ein neues Objekt vom Typ GameState erschaffen namens "state". Dieer GameState wird nun kopiert in ein zweites Objekt namens temp. In der dritten Zeile wird vom GameState temp der Tower in der Stadt 0 und am Slot 0 zurückgeliefert und die addPart() - Methode angwendet. Der blaue Spieler legt also auf den Platz einen Turm der Größe 3.
Das heißt, eigentlich müsste sich in temp und state nichts verändert haben, da die addPart()-Methode auf den Tower angewendet wird, der von getTower() zurückgeliefert wurde. Wenn ich aber im DebugModus nachschaue, dann wurden sowohl im temp als auch im state Objekt der Turm an der Stelle (0,0) um 3 erhöht. Was geht da vor sich?
Vorallem wieso ändert sich das state Objekt ob wohl ich doch nur auf das temp Objekt zugreife?
Ich hoffe ich konnte mein Problem verständlich darstellen
. Es wäre sehr nett wenn mir jemand das Ereignis erklären kann.
mfg xparet0209
PS: Der Konstruktor der GameState Klasse setzt die ganzen towers, die er als Parameter überliefert bekommt...
Ich hab das in dem Beispiel mal rausgenommen da das nicht so wichtig ist (denke ich)
ich habe ein Problem bei folgender Sache. Ich habe eine Klasse GameState:
PHP:
public class GameState
{
public List<Tower> towers;
public Tower getTower(int city,int slot)
{
Tower temp = new Tower(city,slot);
foreach (Tower t in towers)
{
if (t.city == city && t.slot == slot)
{
temp = t;
break;
}
}
return temp;
}
// weitere methoden und variablen sind unwichtig
}
Ihr könnt euch das Spiel Manhattan vorstellen. Man hat ein Spielfeld mit verschiedenen Städten. Jede Stadt hat wiederum verschiedene Bauplätze (Slots), auf denen Türme errichtet werden können. Man kann nun in einer bestimmten Stadt auf einem Bauplatz einen Turm gewisser Höhe bauen-
Bei folgenden Aufruf verstehe ich allerdings nicht was passiert:
PHP:
GameState state = new GameState();
GameState temp = state;
temp.getTower(0, 0).addPart(PlayerColor.BLUE, 3);
Das heißt, eigentlich müsste sich in temp und state nichts verändert haben, da die addPart()-Methode auf den Tower angewendet wird, der von getTower() zurückgeliefert wurde. Wenn ich aber im DebugModus nachschaue, dann wurden sowohl im temp als auch im state Objekt der Turm an der Stelle (0,0) um 3 erhöht. Was geht da vor sich?
Vorallem wieso ändert sich das state Objekt ob wohl ich doch nur auf das temp Objekt zugreife?
Ich hoffe ich konnte mein Problem verständlich darstellen
mfg xparet0209
PS: Der Konstruktor der GameState Klasse setzt die ganzen towers, die er als Parameter überliefert bekommt...
Ich hab das in dem Beispiel mal rausgenommen da das nicht so wichtig ist (denke ich)
Zuletzt bearbeitet: