User Interface Programmieren / Varianten?!

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

User Interface Programmieren / Varianten?!

Beitrag 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 ]
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: User Interface Programmieren / Varianten?!

Beitrag 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.
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: User Interface Programmieren / Varianten?!

Beitrag 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 :-)
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: User Interface Programmieren / Varianten?!

Beitrag 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
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: User Interface Programmieren / Varianten?!

Beitrag 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 ;-)
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: User Interface Programmieren / Varianten?!

Beitrag von kimmi »

Um so besser :). Mir war das bei deinem vorgestellten Entwurf nicht ganz klar.

Gruß Kimmi
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: User Interface Programmieren / Varianten?!

Beitrag 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.
Ohne Input kein Output.
Antworten