Wenn Sie jemals von Nethack gehört haben, sind Sie mit einem solchen Gameplay-Feature wie polymorph vertraut.Java: Eine Variable als Link zur Klasse
In einem Java-Spiel, das ich bin modden, Mobs (Held, Monster) als Java-Klassen angegeben, die alle sehr Basis Char.java Klasse erweitern. Ich versuche, dieser Basisklasse ein neues Feld hinzuzufügen: ein öffentliches Feld current_form, das ein Link zu der Klasse sein soll, die deine aktuelle Form oder die aktuelle Form von Monstern darstellt.
Basis Char.java Klasse würde Attacke(), move(), und einige weitere Verfahren, die current_form.attack auslösen wird(), current_form.move() sind, wobei current_form wird durch Klassenname ersetzt.
Also, wenn ich die Klasse Held haben (erweitert Char):
Hero h = new Hero();
und ich angreifen:
h.attack();
es wird eine do_attack()
Methode als meine aktuelle Form auslösen (sprich: aus einer Klasse benannt als meine aktuelle Form), wenn mein Formular Rat.class
ist, löst es Rat.do_attack()
jeweils aus.
Wie erreichen Sie diese Art von Verhalten?
Sie haben eine Variable, die sich auf eine entsprechende * Instanz * der Klasse bezieht, die das aktuelle Formular repräsentiert, nicht auf die Klasse. Normalerweise rufen Sie Methoden für diese Instanz auf. Hier gibt es Möglichkeiten für ein Refactoring, aber das würde mehr und größere Änderungen mit sich bringen. –