Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Crazy007

Treue Seele

  • »Crazy007« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Tirol

  • Private Nachricht senden

1

01.11.2011, 15:15

Spiel Kapitel 12 Hauptmenü

Hallo,
ich habe das Buch C++ für Spieleprogrammierer endlich fertig gelesen, aber am Ende soll man sein Spiel auch noch erweitern.
Ich habe schon Sounds eingefügt und jetzt versuche ich ein Menü zu erstellen. Nur leider habe ich keine Ahnung wie das Funktionieren soll.
Soll ich eine Klasse wie CGame schreiben, eine Funktion, direkt in die main Datei oder ganz was anderes.
Bitte gebt mir Tipps!
Danke

P.S.:Ich wusste nicht wo ich das rein schreiben soll da hab ichs einfach hier reingeschrieben weils eigendlich eine Frage zum Buch ist
Der Error sitzt meistens vor dem Bildschirm! :D

2

01.11.2011, 19:01

Hallo Crazy007 und erst mal herzlich willkommen im Forum :)

Ein Hauptmenü kannst du mit einer State Machine lösen.
Das heißt du teilst die Spiellogik auf. Die Klasse CGame beherrscht ja die eigentliche Logik des Spiels, also kannst du z.B. eine Klasse CMenu
machen, die eben die Logik des Hauptmenüs übernimmt. Dann musst du es nur so hinbekommen, dass die richtige Klasse an der Reihe ist.
Hier ist ein guter Artikel darüber.

Wenn es noch Fragen gibt, dann immer her damit :)

Crazy007

Treue Seele

  • »Crazy007« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Tirol

  • Private Nachricht senden

3

01.11.2011, 20:01

Danke Batzer ich werde mir den Artikel sofort ansehan
Der Error sitzt meistens vor dem Bildschirm! :D

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

01.11.2011, 20:18

Persönlich würde ich eine komplette Fenster/Menü-API schreiben inklusive Editor oder eine vorhandene nehmen (nee, ehrlich, ich würde vermutlich eine schreiben, eine nehmen wäre aber sinnvoller).
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

02.11.2011, 10:09

@Batzer: Glaubst du wirklich, das ist für einen Anfänger auf seinem Stand geeignet?

@Crazy007: Fürs erste reicht es, wenn du einmal die Game und einmal die Menüklasse hast und mit if und else verzweigst.
Um zu wechseln gibst der Menüklasse eine Methode, die den geklickten Button zurück gibt, rufst die Methode in der Hauptschleife auf und reagierst entsprechend darauf(Programm beenden, Spiel starten usw.
Hast du eine Idee wie man Buttons realisieren könnte?

Ich persönlich find die Übung nicht besonders sinnvoll. Wie sollst du Code erweitern, den du vermutlich nicht wirklich verstehst? Stattdessen kannst noch einige Konsolenprogramme und anschließend ein eigenes Projekt mit der SDL (oder einer anderen Lib, wie der SFML) realisieren. Das führt zu weniger Frust und schnellerem Lernen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

02.11.2011, 12:20

Naja wie schon gesagt. Für den Anfang kannst du einfach mit if else was bastelt. Sowas wie if(menu==true){ Code für das Menü } else if(game== true) und so weiter.
Anstatt bools für jeden "GameState" zu nehmen ( So nennt man die einzelnen Zustände des Spiels oft) kannst du natürlich auch mit einer enum arbeiten. Dann kannst du sowas machen:

C-/C++-Quelltext

1
switch(state){  case menu:      // hier der Code fürs Menü        break;  case game:      // hier der Code fürs Spiel        break;}



Kenne das Buch nicht, aber anscheinend wird ja eine Klasse CGame entwickelt. Wie schon geschrieben, machst du dir am besten auch eine Klasse CMenu für das Menü. Um dann den Zustand des Spiels zu wechseln, müssen diese Klassen dann den Wert von "state" ändern können. Dafür gibts dann viele verschiedene Möglichkeiten. Das bekommst du aber bestimmt selbst hin. Ansonsten gibts ja hier das Forum.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

helebelele

Frischling

Beiträge: 32

Wohnort: Düsseldorf

  • Private Nachricht senden

7

02.11.2011, 16:57

Also ich hab auch ein Menü in das Spiel eingebaut, indem ich einfach eine Klasse CMenu erstellt habe und dort eine bool-Variable erstellt um zu "prüfen" ob das menü noch läuft und dann mit switch-case-verzweigungen gearbeitet um die einzelnen menüpunkte aufzurufen. Das konnte ich sogar realisieren, obwohl ich das eigentliche Spiel nicht verstanden hatte -.-
Deshalb fang ich nochmal ganz klein an XD

Werbeanzeige