Seite 1 von 1

User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 10:02
von IlikeMyLife
Hallo zusammen.

Ich bastel derzeit an meinem User Interface und möchte nach und nach die einzelnen Menüs einbauen ( Hauptmenü, Optionen, etc... )

ich habe mir das so vorgestellt, dass ich ein enum erzeuge, welches die einzelnen Menüs beinhaltet. So weit ja ok.

Mein verständnis hängt grad an dem InGame-Interface das Punkte wie Schnellwahlleiste, Minimap, Lebensbalken umfasst.
Diese sollen Wahlweise ein- und ausgeschaltet werden können, wenn der spieler es nicht sehen möchte.

ist es sinnvoll diese in einem enum einbauen zu wollen, oder sollte ich dafür lieber ein mehrdimensionales array verwenden

array [ menü ] [ bool Wert ob an oder aus ]

Re: User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 10:18
von Artificial Mind
Hallo,

also ich bin immer großer Fan von objektorientierten Benutzerinterfaces, da GUI Funktionalität sehr gut auf Klassen passt (meiner Meinung nach).

Dementsprechend hättest du dann Klassen für Minimaps, Balken etc., die von irgendwelchen GUI-Subklassen erben, wobei in einer solchen Subklasse z. B. eine Flag mit Visible true/false gesetzt werden kann.

Re: User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 11:07
von IlikeMyLife
da hast du mich grad auf eine idee gebracht :-)

ich werde ganz einfach die einzelnen interface-objekte als klassen aufbauen. so wie ich den enum-state InGame habe, kann ich von dort aus die klassen mit einbauen :-)

einen Member als bool-Wert für die sichtbarkeit lässt sich dadurch wohl auch am einfachsten umsetzen :-)

Re: User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 11:09
von kimmi
Ich propagiere hier auch eher eine Basisklasse beziehungsweise eine allgemein von allen UI-Elementen verfügbare Property. Der global bzw. in der UI verfügbare Array widerspricht dieser Kapselung.

Gruß Kimmi

Re: User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 11:21
von IlikeMyLife
für die InGame-UI werde ich auf jeden fall eine Basisklasse aufbauen. Alleine die Memberfunktionen, die ich teils übernehmen muss, sind sich in allen elementen doch sehr ähnlich.

@ kimmi:
Globale Variablen vermeide ich von grund auf. Wenn es schon die OOP gibt, sollten wir sie auch nutzen ;-)

Re: User Interface Programmieren / Varianten?!

Verfasst: 19.12.2011, 13:00
von kimmi
Um so besser :). Mir war das bei deinem vorgestellten Entwurf nicht ganz klar.

Gruß Kimmi

Re: User Interface Programmieren / Varianten?!

Verfasst: 20.12.2011, 11:57
von BeRsErKeR
IlikeMyLife hat geschrieben:@ kimmi:
Globale Variablen vermeide ich von grund auf. Wenn es schon die OOP gibt, sollten wir sie auch nutzen ;-)
Wenn globale Variablen Sinn machen, solltest du sie auch nutzen. Alles was nicht zwingend in eine Klasse muss sollte global sein (natürlich in einem entsprechenden namespace).

@Topic: Ich habe meist zwei verschiedene Basisklassen. Eine für den Screen (Intro, Hauptmenü, Spielbildschirm, Outro, usw). Und eine Basisklasse für Menüs (Inventar, Optionsmenü, etc), die in einem Screen angezeigt werden können. Die Menüklasse kann dann GUI-Elemente anzeigen und spezifische Events verarbeiten. Das Menü steuert alle GUI-Elemente. Der Screen steuert spezifische Screendaten, verwaltet alle Menüs, leitet Events an diese weiter etc. Die Basisklasse für Screens enthält bei mir in der Regel eine Liste von Menüs-Basisklassen. Konkrete Screen-Klassen wie Hauptmenü füllen dann ihre Menüs in die Liste und die Draw-Methode der Screen-Basisklasse zeigt alle Menüs in der Liste an bzw. leitet alle Events an die Menüs aus der Liste weiter. Es gibt natürlich viele Ansätze.