Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Erni Junior JLI'ler
Anmeldedatum: 29.10.2003 Beiträge: 54
Medaillen: Keine
|
Verfasst am: 18.11.2003, 21:53 Titel: ingame menüs |
|
|
HI, kennt jemand irgendwelche tutorials über "wie mache ich game menüs" oder irgendwas was in die richtung geht? ich krieg so langsam von dies und jenem n plan, aber wie ich menüs incl buttons, scrolling text etc ins spiel bringe, weiss ich bisher nicht. Werden Menüs mit MFC in ein spiel gebracht oder is etwa jeder Button ein surface ? Ich stells mir nur so vor das man für n menü wohl ne eigene winproc schreiben muss, hach ich weiss auch nicht, kann mir da jemand weiterhelfen? |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 19.11.2003, 10:09 Titel: |
|
|
Ein Menü ist eigentlich auch nichts anderes als viele Surfaces. Zumindestens die wo du zum Beispiel bei C&C, Warcraft 3, Max Payne oder was du sonst noch so spielst, siehst. Eine eigene Callback-Funktion braucht ein Menü aber nicht. Du kannst dir ja verschiedene Renderstate definieren:
Code: | #define RS_MENUE 1
#define RS_GAME 2
#define RS_CREDITS 3
usw... |
dann kannst du jedes mal beim Durchlaufen deiner Spielschleife abfragen:
z.B. es wurde ESC gedrückt:
Code: | if(KEYDOWN(VK_ESCAPE) && Renderstate == RS_GAME)
{
Renderstate = RS_MENUE;
}
if(KEYDOWN(VK_ESCAPE) && Renderstate == RS_MENUE)
{
PostQuitMessage(0);
}
|
Renderstate ist hierbei nur eine normale int Variable, der zu Beginn etwa der Wert RS_MENUE zugeteilt wird. Dann wird eben dein Menü gezeichnet und nicht das Spiel.
Hoffe du hast es verstanden.
Vision |
|
Nach oben |
|
 |
Erni Junior JLI'ler
Anmeldedatum: 29.10.2003 Beiträge: 54
Medaillen: Keine
|
Verfasst am: 19.11.2003, 12:50 Titel: |
|
|
ja danke, und wie stehts um die Funktionalität eines Menüs wie z.b. Scrollen von Text, switchen auf submenüs etc. . kann selbst der slider eines scrolling textes ein surface sein? gibts darüber kein buch oder tut...
gruss
ernie |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 19.11.2003, 13:30 Titel: |
|
|
Ich hab mir da (wie für fast alles *gg*) ne kleine Klasse geschrieben.
Für die Menüpunkte verwende ich ganz gewöhnliche Surfaces und eine Scriptdatei, in der die Menüstruktur gespeichert ist. Bei MatrixProtector sah das mit der neuen Scriptengine so aus:
Zitat: | #Menümanager
§UNTERMENUE=string;
#
§ENDE=string;
#
UNTERMENUE=START;
UNTERMENUE=Neues Spiel;
ENDE=string;
UNTERMENUE=Credits;
ENDE=string;
UNTERMENUE=Beenden;
ENDE=string;
ENDE=string; |
Mit jedem "UNTERMENUE" wird ein neues Untermenü mit dem Namen nach dem '=' geöffnet. Mit dem ENDE-Befehl wird dieses Menü abgeschlossen. Die darauffolgenden Untermenüpunkte sind dann eine Ebene höher.
Die Koordinaten der Menüsurfaces am Bildschirm werden mit hilfe der Breite und Höhe der Surfaces, dem Bereich in dem sie gezeichnet werden sollen und der Anzahl der Untermenüs gezeichnet.
Die ID der Menüsurfaces entspricht jeweils dem Menünamen im Script.
Bei einem Mausklick werden eben die Positionen verglichen bzw. die Markierung aktualisiert und der Menüpunkt bekommt die ID der aktuellen Markierung.
<edit>
Ein Tutorial zu dem Thema kenn ich nicht
</edit> _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Erni Junior JLI'ler
Anmeldedatum: 29.10.2003 Beiträge: 54
Medaillen: Keine
|
Verfasst am: 19.11.2003, 14:40 Titel: |
|
|
aha na ich beginne so langsam zu verstehen, aber alles mit surfaces zu machen ist das dann nich n heidenaufwand n menü zu kreieren?
Als beispiel, die Gesamt Spieloberfläche ist 800x600 gross, menü wäre unten im spiel mit sagen wir 800x200.
Jetzt blitte ich als erstes meinen Menühramen an die gewünschte untere Position, dann blitte ich die buttons usw.
Doch was nun mit Hovereffekten wie: ein dunkler button wird erhellt wenn man drüberhovert. Müsste ich dann zu jedem Button einen hellen Button haben, der jedesmal ins menü geblittet wird, wenn mousexy auf die koordinaten des buttons zeigt? |
|
Nach oben |
|
 |
Hasenfuß Senior JLI'ler

Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 19.11.2003, 14:45 Titel: |
|
|
Dann schreibst du dir halt eine Klasse für Buttons und eine für das Menü die die Buttons verwaltet. An den einzelnen Button können dann durch Funktionen Nachrichten geschickt werden wie:
Wenn der Mauszeiger innerhalb des Buttonrahmens ist => Button.SetActive(TRUE)
oder irgendwie sowas.
In der Menüklasse gibts halt dann eine große Renderfunktion die den Rahmen und alle Buttons zeichnet.[/code] |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 19.11.2003, 14:58 Titel: |
|
|
Wenn du Hovereffekte haben willst, kannst du das ja auch mit Alphaeffekten machen.
Du hast für den hervorgehobenen Menüpunkt eine Grafik und blittest dieses Surface eben dunkler oder mit dem Hintergrund geblendet
Ich hab bisher immer eine Markierungsgrafik dafür verwendet, die dann eben über den entsprechenden Menüpunkt gezeichnet wird. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
|