Guten Tag, alle zusammen.
Ich beschäftige mich gerade mal wieder mit einem kleinem Problem:
Ich habe eine Klasse Sprite, diese ist das Grundgerüst für fast alles Leben was zu finden ist. Also Kreaturen(weiter aufgeteilt in weitere Klassen: Elben, Menschen, ...), Häuser, Zäune und auch kleines Krabbelzeug (als deko).
Jetzt komme ich zu folgendem Problem. Ich will im späteren Verlauf sowohl Häuser auch als Creaturen/Einheiten anklicken können. Dabei sollen sie verschiedene Funktionen haben. Häuser sollen z.B. Einheiten schutz bieten, im Gegensatz sollte man Einheiten bewegen können, ein Haus nicht richtig ?
Und dort liegt der Hund begraben.
Wie bekomme ich die Unterscheidung hin. Die Sprite-Klasse hat ja nicht die nötigen Methoden wie z.B. moveTo(Point p). Diese wird erst bei der Creatur-Klasse hinzugefügt.
Jedoch komme ich dann mit meinem Verfahren nicht wieder an die Methode heran:
Auf der Karte habe ich ein Liste wo alle Sprites abgespeichert werden:
Dann habe ich ein Speicher für den aktuellen "aktiven"/angeklickten Sprite:
Wenn jetzt die Maus irgendwo hinklickt, soll die Figur sich nach dort bewegen:
Hier nochmal meine Herachie:
Wo muss meine moveTo()-Methode hin?
Ich hab versucht den currentSprite nach Creatur zu casten, aber dies geht ja nicht da es eine abstracte Klasse ist.
mfg. Dagobert
Ich beschäftige mich gerade mal wieder mit einem kleinem Problem:
Ich habe eine Klasse Sprite, diese ist das Grundgerüst für fast alles Leben was zu finden ist. Also Kreaturen(weiter aufgeteilt in weitere Klassen: Elben, Menschen, ...), Häuser, Zäune und auch kleines Krabbelzeug (als deko).
Jetzt komme ich zu folgendem Problem. Ich will im späteren Verlauf sowohl Häuser auch als Creaturen/Einheiten anklicken können. Dabei sollen sie verschiedene Funktionen haben. Häuser sollen z.B. Einheiten schutz bieten, im Gegensatz sollte man Einheiten bewegen können, ein Haus nicht richtig ?
Und dort liegt der Hund begraben.
Wie bekomme ich die Unterscheidung hin. Die Sprite-Klasse hat ja nicht die nötigen Methoden wie z.B. moveTo(Point p). Diese wird erst bei der Creatur-Klasse hinzugefügt.
Jedoch komme ich dann mit meinem Verfahren nicht wieder an die Methode heran:
Auf der Karte habe ich ein Liste wo alle Sprites abgespeichert werden:
Java:
private LinkedList<Sprite> sprites;
Dann habe ich ein Speicher für den aktuellen "aktiven"/angeklickten Sprite:
Java:
...
private Sprite selectSprite;
...
Java:
...
if(select.isPressed()){
selectSprite.moveTo(moveTo);
}
...
Hier nochmal meine Herachie:
Sprite <- Creature (abstract) <- Elbbogenschütze
Spite <- Gebäude (abstract) <- div. Gebäude
Wo muss meine moveTo()-Methode hin?
Ich hab versucht den currentSprite nach Creatur zu casten, aber dies geht ja nicht da es eine abstracte Klasse ist.
mfg. Dagobert