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 ]
User Interface Programmieren / Varianten?!
-
- Establishment
- Beiträge: 212
- Registriert: 08.05.2011, 09:59
- Benutzertext: Feel Free
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: User Interface Programmieren / Varianten?!
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.
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.
-
- Establishment
- Beiträge: 212
- Registriert: 08.05.2011, 09:59
- Benutzertext: Feel Free
Re: User Interface Programmieren / Varianten?!
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 :-)
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 :-)
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: User Interface Programmieren / Varianten?!
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
Gruß Kimmi
-
- Establishment
- Beiträge: 212
- Registriert: 08.05.2011, 09:59
- Benutzertext: Feel Free
Re: User Interface Programmieren / Varianten?!
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 ;-)
@ kimmi:
Globale Variablen vermeide ich von grund auf. Wenn es schon die OOP gibt, sollten wir sie auch nutzen ;-)
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: User Interface Programmieren / Varianten?!
Um so besser :). Mir war das bei deinem vorgestellten Entwurf nicht ganz klar.
Gruß Kimmi
Gruß Kimmi
Re: User Interface Programmieren / Varianten?!
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).IlikeMyLife hat geschrieben:@ kimmi:
Globale Variablen vermeide ich von grund auf. Wenn es schon die OOP gibt, sollten wir sie auch nutzen ;-)
@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.
Ohne Input kein Output.