Hallo Leute,
ich stehe zur Zeit vor mehreren kleinen Problemen beim programmieren von einem TD-Spiel.
Wer es nicht kennt: Tower defense - Wikipedia, the free encyclopedia .
Ich habe eine TDFrame Klasse die JFrame extended, eine TDPanel Klasse die JPanel extended und Runnable implementiert und Aufgaben wie update und draw übernimmt.
Weiterhin habe ich eine Level Klasse, die mit einer Id erstellt wird und so das jeweilige Level läd.
Diese Level Klasse speichert die waypoints des Weges in einer ArrayList, die enemies wieder in einer ArrayList, und die towers wieder in einer ArrayList. Enemy und Tower sind wieder jeweils Klassen.
Um jetzt zu checken, ob ein Tower schießen muss (der einfachheit halber nur ein Laserstrahl) wollte ich die Distanz von Gegner und Tower berechnen und gucken ob beide Radien zusammen addiert kleiner oder größer als RadiusGegner + RadiusTower sind.
Mein Problem: Wo checke ich das ganze? In der Tower Klasse oder in der Enemy Klasse? Wenn ich es in der Tower Klasse mache (lasse mir also eine frische Version der enemie ArrayList übergeben) könnte ich zwar theortisch einen Laserstrahl zeichnen lassen, doch wie würde ich dem Enemy jetzt z.B. health abziehen?
Und nur nebenbei, mein Enemy ist eigentlich quadratisch, deswegen wird es durch den Radius etwas ungenau beim Collision detecting, gibt es eine andere Möglichkeit? Mit Rectangle und intersect würde es nicht klappen, da der Radius vom Tower aufjedefall rund sein muss!
Danke schonmal (;
ich stehe zur Zeit vor mehreren kleinen Problemen beim programmieren von einem TD-Spiel.
Wer es nicht kennt: Tower defense - Wikipedia, the free encyclopedia .
Ich habe eine TDFrame Klasse die JFrame extended, eine TDPanel Klasse die JPanel extended und Runnable implementiert und Aufgaben wie update und draw übernimmt.
Weiterhin habe ich eine Level Klasse, die mit einer Id erstellt wird und so das jeweilige Level läd.
Diese Level Klasse speichert die waypoints des Weges in einer ArrayList, die enemies wieder in einer ArrayList, und die towers wieder in einer ArrayList. Enemy und Tower sind wieder jeweils Klassen.
Um jetzt zu checken, ob ein Tower schießen muss (der einfachheit halber nur ein Laserstrahl) wollte ich die Distanz von Gegner und Tower berechnen und gucken ob beide Radien zusammen addiert kleiner oder größer als RadiusGegner + RadiusTower sind.
Mein Problem: Wo checke ich das ganze? In der Tower Klasse oder in der Enemy Klasse? Wenn ich es in der Tower Klasse mache (lasse mir also eine frische Version der enemie ArrayList übergeben) könnte ich zwar theortisch einen Laserstrahl zeichnen lassen, doch wie würde ich dem Enemy jetzt z.B. health abziehen?
Und nur nebenbei, mein Enemy ist eigentlich quadratisch, deswegen wird es durch den Radius etwas ungenau beim Collision detecting, gibt es eine andere Möglichkeit? Mit Rectangle und intersect würde es nicht klappen, da der Radius vom Tower aufjedefall rund sein muss!
Danke schonmal (;