# Wie ein Spielmenü realisieren?



## mantax (23. Feb 2009)

Hallo
hab mich schon seit längerem gefragt, wie man wohl am besten ein Spielmenü umsetzt (sowas, das bei ESC-Druck kommt). 
Ich möchte nicht auf Swing verzichten, außerdem sollte es unter Fullscreenanwendungen auch zu verwenden sein.

Wie würdet ihr das ganze angehen? 
CardLayout? LayeredPane? ...
CardLayout erscheint mir auf den ersten Blick am sinnvollsten...

Vielen Dank schonmal


----------



## manuche (23. Feb 2009)

Also mit Spieleprogrammierung und Swing kommst du in Teufelsküche...
Swing hat viel zu viel Overhead! Und spätestens wenn du "selbst-gemaltes" und Swingkomponenten mischt wird es höchst wahrscheinlich schief gehen!
Vermutlich wirst du dir da eine eigene Logik schreiben die auf Tastendrücke und Mouseclicks reagiert und das entsprechende Umfeld zeichnet...


----------



## Developer_X (23. Feb 2009)

ich sag dir wie ich angehen würde, setzt ein null Layout, dann setzt dann addest du ganz einfach das Fenster des Spiesl, und das Menu außer rum auch, dann musst du für alles dass du hast, die Position und Größe angeben, mit der Option" setBounds();"
zum Beispiel du hast einnen Button, 
dann schreibst du:

```
Button b = new Button();
add(b); b.setBounds(0,30,20,20);
```
Damit würdest du einen Button bekomen, der sich 30 auf der Y Achse befindet, und der 20*20 groß wäre, ok?
Alles verstanden?

Deswegen ich empfehle dir diesen
Weg, der ist zwar viel mehr, und härter,
aber dafür kannst du wirklich alles was es so anzugeben gibt, angeben, wirklich alles, nicht wie bei BorderLAyouts usw...


----------



## 0x7F800000 (23. Feb 2009)

Developer_X hat gesagt.:


> setBounds()


setBounds() und verwandte Methoden sind nicht für direkten Einsatz, sondern für die layoutmanager gedacht.


> Deswegen ich empfehle dir diesen
> Weg, der ist zwar viel mehr, und härter,
> aber dafür kannst du wirklich alles was es so anzugeben gibt, angeben, wirklich alles, nicht wie bei BorderLAyouts usw...


Nichts für ungut, aber das ist ein um 180° verkehrt, so war's nicht gedacht.

Bei Menu's für vollbild-anwendungen würde ich mich persönlich am ehesten wohl von menu's aus alten egoshootern inspirieren lassen: keinerlei reaktion auf mausbewegungen, höchstens zwei arten von Komponenten, alles ist mit vier Pfeilchen und der Enter-taste steuerbar, vielleicht noch eine einfache Form von textfeldern. Sowas zu implementieren dauert nicht allzulange, es ist bemerkenswert einfach, sowohl für programmierer als auch für benutzer. Balsam für's hirn & für die Augen. Je einfacher desto besser.

Es kommt natürlich drauf an, was für eine Art von Spiel das ist. Wenn das ein Egoshooter ist, dann brauchst du ja im spiel ja auch nirgends irgendwelche Schaltflächen o.ä. , da lohnt sich der Aufwand auch für's menu nicht sonderlich.

Bei einem RTS oder irgendsoeinem RPG wie WoW, wo der Bildschirm eh zu 85% mit Schaltflächen gefüllt ist, kannst du die ganze bereits entwickelte gui ja auch im menu verwenden. Aber da wäre swing wirklich fehl am platz, da musst du wohl oder übel das irgendwie näher an die hardware gestalten.


----------



## mantax (24. Feb 2009)

Erstmal vielen Dank an euch alle!
So wies aussieht werd ich also alle Komponenten selbst schreiben...

Wenn ich also einen Button schreiben will werde ich ein Bild auf mein Fullscreen-JPanel zeichnen und auf Mausklicks innerhalb dieses Rechtecks reagieren... das wird doch in etwa die richtige Herangehensweise sein oder? 

Na dann kann ich mir wenigstens ein verdammt geil aussehendes "Look&Feel" (wisst schon was ich mein) selbst zusammenbasteln 

Bedanke mich nochma und mach jetzt zu

Edit:
Find den Close-Button nicht xD


----------

