# Klickbare Objekte im Spiel



## stulleman (22. Jun 2011)

Hallo zusammen,
mir ist leider kein sinnvollerer Name eingefallen (;
Ich bin immer noch dabei ein Tower-Denfense Game zu programmieren, und soweit klappt auch alles. Jetzt Hätte ich aber gerne neben meinem Panel ein Menü in dem die verschiedenen Tower sind, da drückt man dann drauf und plaziert ihn im Panel. Zudem sollen plazierte Tower auch klickbar sein, um dann z.B. upzugraden. Mein Problem ist einfach das ich nicht mal weiß wie ich da ran gehen soll! Habt ihr eine idee?


----------



## Gast2 (22. Jun 2011)

Mit einem Mouselistener zum beispiel 

Woran hakts denn genau?


----------



## stulleman (22. Jun 2011)

Also die Tower sind zwar Objekte, werden aber nur gepaintet, also sind es ja keine wirklichen Objekte die ich anklicken kann. Und die Auswahl am Rand weiß ich auch nicht wie ich die machen soll, soll ich das Menü auch painten?


----------



## thewulf00 (22. Jun 2011)

Du machst zwei Panels.
Ein Panel ist eine AWT-Komponente, die lediglich Bilder mit Towern enthält, die dann beim onMouseClick- Ereignis auslösen. Dann änderst Du den Cursor des andren Panels zum "Platziercursor".

Du machst 3D? Für den Fall, dass ja: Jetzt kannst Du im Hauptpanel, was den 3D-Canvas enthält, einfach das Objekt mit der Maus mitschieben, bis es an der richtigen Stelle ist. Dort auf Klick platzieren. Zum Wiederanwählen des bereits platzierten Towers dienen Picking-Objekte.


----------



## stulleman (22. Jun 2011)

Also hier ist ein Screenshot von meinem Spiel:







An der rechten Seite, will ich jetzt sowas wie ein Menü machen, dafür nehme ich ein zweites Panel, so wie ich das jetzt verstanden habe richtig? In dieses Panel kommen JLabels mit Icons rein?
Und wenn ich dann auf das JLabel clicke, mache ich als Mauszeiger z.B. den Tower, wenn ich dann klicke adde ich den Tower an der stelle. Das Problem bleibt aber dann weiter hin das ich die bereits plazierten Tower nicht mehr anwählen kann!


----------



## thewulf00 (22. Jun 2011)

Also vorweg: Deine Screens solltest du etwas beschneiden, Maximilian.

Da Du kein 3D machst, entfällt der 2. Teil meiner vorigen Antwort 

Zum Menü: Ja, Du machst irgendwas, was anklickbar ist, und Bilder aufnehmen kann. Ich weiß nicht genau, was.
Wenn es angeklickt ist, merkst Du Dir as über eine globale Variable, z.B. mouseMode. mouseMode ist dann 0, wenn nichts geklickt wurde, und 1 für "Erster Tower geklickt", usw...
Dann eine onMouseMove-Funktion in Hauptpanel. Diese Funktion prüft mouseMode und zeigt dann unter der Maus an den richtigen Koordinaten einfach ein Bild an. (Damit kannst Du erreichen, dass unter der Maus der neu zu bauende Tower "mitfliegt".)
Wenn Du wieder klickst, den mouseMode wieder auf 0 und der Tower wird gebaut.

Dieses fliegende Bild kannst Du nun wunderbar mit weiteren nützlichen Infos versehen: Grün für baubar, rot für zu wenig Geld, einen Kreis drumherum für die Reichweite, etc.


----------



## stulleman (22. Jun 2011)

Ja habe ich auch gemerkt, mach ich das nächste mal (;

Super, das mit dem Menü denke ich wird dann ja sehr einfach!

Nur irgendwie habe ich das Gefühl du willst mir mit den Towern die schon stehen nicht helfen 
Aber vielleicht frage ich nochmal wenn ich das Tower platzieren hinbekommen habe (;

Dankeschön für die Hilfe schonmal!


----------



## thewulf00 (22. Jun 2011)

Ich würde das ganze Panel mit einem Listener versehen, der dann beim onMouseClick einfach prüft, ob die Koordinaten innerhalb eines Towers waren.


----------



## ARadauer (22. Jun 2011)

Ich würde es auch so machen. Also wo hab ich hin geklickt und was befindet sicht dort?
Ich würde nicht alle gezeichneten Elemente mit einem MouseListner versehen...


----------

