Hallo Leute.
Ich programmiere gerade ein kleines Spiel und mir stellt sich die Frage, wie ich zwei Klassen am besten miteinander kommunizieren lassen soll.
Grundsätzlich würde es ja dann nicht in diese Kategorie gehören, jedoch bezieht es sich nicht nur auf das Programmieren von Spielen.
Der Aufbau sieht folgendermaßen aus:
Ich habe eine Game-Klasse, die ungefähr so aussieht:
Natürlich gibt es noch einen Thread, der das onTick()-Event in einem bestimmten Intervall aufruft.
Nun habe ich ein GameObject-Interface, das ungefähr wie folgt aussieht:
Nun kann ich mir einige Objekte schreiben, die jeweils etwas anderes machen, und diese im Konstruktor meiner Game-Klasse hinzufügen, wo sie erstmal nichts machen, bis ich die start()-Methode aufrufe.
Die Game-Klasse kann nun problemlos dem GameObject sagen, was es zu tun gibt, indem es seine Methoden aufruft (zeichnen, etc.)#
Was aber, wenn ich bspw. will, dass ein GameObject sich nach sagen wir 20 Ticks zerstört?
So würde der erste Ansatz aussehen:
Nun könnte ich im Interface noch ein Flag "destroyMe" (bspw.) oder einen Listener hinzufügen, aber gibt es dafür auch bessere Wege?
Möchte nämlich nicht irgendeinen Wurschtelcode benutzen, wenns doch eigentlich viel besser ginge.
Also, was ich machen will, ist kurz beschrieben folgendes:
Ich habe eine Game-Klasse mit einer Liste von GameObjects. Die Game-Klasse kann problemlos deren Methoden aufrufen, jedoch wissen die GameObjects nichts von der Game-Klasse. Was ist die beste Methode, ein GameObject die Game-Klasse zu bitten, es zu zerstören?
Ich hoffe, das war einigermaßen verständlich von mir erklärt.
Danke schonmal!
Ich programmiere gerade ein kleines Spiel und mir stellt sich die Frage, wie ich zwei Klassen am besten miteinander kommunizieren lassen soll.
Grundsätzlich würde es ja dann nicht in diese Kategorie gehören, jedoch bezieht es sich nicht nur auf das Programmieren von Spielen.
Der Aufbau sieht folgendermaßen aus:
Ich habe eine Game-Klasse, die ungefähr so aussieht:
Java:
public class Game
{
private ArrayList<GameObject> objects;
public Game()
{
objects = new ArrayList<GameObject>();
}
public void onTick()
{
for (GameObject object: objects)
{
object.onTick()
}
}
public void start()
{
// ...
}
// Restliche Teile des Codes sind im Moment nicht relevant.
}
Nun habe ich ein GameObject-Interface, das ungefähr wie folgt aussieht:
Java:
public interface GameObject
{
void onCreate()
void onTick()
void onDraw(Canvas c) // irrelevant
}
Die Game-Klasse kann nun problemlos dem GameObject sagen, was es zu tun gibt, indem es seine Methoden aufruft (zeichnen, etc.)#
Was aber, wenn ich bspw. will, dass ein GameObject sich nach sagen wir 20 Ticks zerstört?
So würde der erste Ansatz aussehen:
Java:
public class SelfDestroyingObject implements GameObject
{
private int ticks;
public void onCreate()
{
ticks = 0;
}
public void onTick()
{
if (ticks == 20)
{
// ?
return;
}
ticks++;
}
}
Möchte nämlich nicht irgendeinen Wurschtelcode benutzen, wenns doch eigentlich viel besser ginge.
Also, was ich machen will, ist kurz beschrieben folgendes:
Ich habe eine Game-Klasse mit einer Liste von GameObjects. Die Game-Klasse kann problemlos deren Methoden aufrufen, jedoch wissen die GameObjects nichts von der Game-Klasse. Was ist die beste Methode, ein GameObject die Game-Klasse zu bitten, es zu zerstören?
Ich hoffe, das war einigermaßen verständlich von mir erklärt.
Danke schonmal!