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

~*Geheim*~

unregistriert

1

14.06.2010, 17:31

SDL_Game Menü

Hi, Leute, ich bin neu hier und hoffe, dass ich euch nicht immer nur mit meinen Problemen störe, sondern dass ich versuche auch eure Probleme zu lösen... Also ich wollte das Spiel mit den Asteroiden fortsetzen, und als Erstes wollte ich ein Menü haben, doch irgendetwas mach ich falsch (sicher ein richtig peinlicher Fehler) Ich habe ein Menü mit ---->enum geschrieben und habe dann die einzelnen Punkte gemacht. Dann hab ich für Spiel Starten (also wenn man das wählt) void StarteSpiel (); gemacht, und am Ende alles was vorher in der Main Funktion war in diese void-Funktion gepackt. Hier der Teil:


enum MENUE
{
SPIELSTART = 1,
OPTIONEN = 2,
BEENDEN = 3
};

int main (int argc, char *argv[])
{
int Eingabe;

std::cout << "Bitte Auswahl treffen.(1-3) " << std::endl;

std::cin >> Eingabe;

switch (Eingabe)
{
case (SPIELSTART):
{
void StarteSpiel ();
}break;
case (BEENDEN):
{
std::cout << "Das spiel wird beendet " << std::endl;
}break;
case (OPTIONEN):
{
std::cout << "Optionen wurden gewaehlt " << std::endl;
}break;
}

std::cin.ignore();
std::cin.get();

return (0);

}

void StarteSpiel ();
{ <------------
............
return (0);
}

Aber wenn ich es Compile, dann kommt diese Fehlermeldeung: error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? (Da wo <----- ist) Ich hoffe, dass Ihr mir helfen könnt und bedanke mich schon mal fürs lesen und fals es etwas gibt was ich tun oder nicht tun sollte, vielleicht könnt Ihr mir Tipps geben) Thx!!!

ZIR

Frischling

  • Private Nachricht senden

2

14.06.2010, 17:41

Also daran kann ich persönlich nichts sehen kannste mal mehr von dem Code zeigen.
Also hier steht auch nochmal die Erklärung zu dem Fehler kannst ja mal gucken ob du da etwas bei dir findest.
http://msdn.microsoft.com/de-de/library/…28VS.80%29.aspx

3

14.06.2010, 17:44

C-/C++-Quelltext

1
2
3
4
void StarteSpiel (); // Was macht das Semikolon denn hier?
{
    return (0);
}
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

4

14.06.2010, 17:45

semikolon *grins*
bei voidfunktionen kannsu das return entweder ganz weg lassen oder wenn du die funktion vorzeitig beenden willst return; benutzen.

edit: zu langsam >.<
"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?

~*Geheim*~

unregistriert

5

14.06.2010, 18:01

Also Das ist der ganze Text: Jetzt ohne Semikolon! Aber dann kommen zwei neue Fehler, dass ich in void keinen Rückgabetypen verwenden darf, aber wenn ich diese lösche, dann kommen 6 neue Fehler.... Fals Es so nicht geht, gibt es eine andere möglichkeit?

#include "Framework.hpp"
#include "Game.hpp"

enum MENUE
{
SPIELSTART = 1,
OPTIONEN = 2,
BEENDEN = 3
};

int main (int argc, char *argv[])
{
int Eingabe;

std::cout << "Bitte Auswahl treffen.(1-3) " << std::endl;

std::cin >> Eingabe;

switch (Eingabe)
{
case (SPIELSTART):
{
void StarteSpiel ();
}break;
case (BEENDEN):
{
std::cout << "Das spiel wird beendet " << std::endl;
}break;
case (OPTIONEN):
{
std::cout << "Optionen wurden gewaehlt " << std::endl;
}break;
}

std::cin.ignore();
std::cin.get();

return (0);

}

void StarteSpiel ()
{
//Framework initialisieren
if (g_pFramework->Init (800, 600, 16, true) == false)
return (0);

//Neue Instanz des Spiels
CGame Game;

//Spiel initialisieren
Game.Init ();

//Spiel laufen lassen. Diese Funktion läuft solange,
//bis das Spiel geschlossen oder die Escape-Taste
//gedrückt wird
Game.Run ();

//Spiel beenden
Game.Quit ();

//Framework beenden
g_pFramework->Quit ();
g_pFramework->Del ();

return (0);
}

Und WOW Thx für das schnelle zurückschrieben...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

6

14.06.2010, 18:06

benutzt bitte die [ cpp ] tags(ohne leerzeichen natürlich)

welche fehler kommen denn ohne return bzw. ohne wert dahinter?

C-/C++-Quelltext

1
return;
"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?

~*Geheim*~

unregistriert

7

14.06.2010, 18:12

cpp Tags? Sry das ich fragen muss...
Also ich weiß nicht ob Du den Qelltext kennst aber diese Fehler kommen dann:

error C2065: 'Game': nichtdeklarierter Bezeichner
error C2228: Links von ".Init" muss sich eine Klasse/Struktur/Union befinden.
error C2065: 'Game': nichtdeklarierter Bezeichner
error C2228: Links von ".Run" muss sich eine Klasse/Struktur/Union befinden.
error C2065: 'Game': nichtdeklarierter Bezeichner
error C2228: Links von ".Quit" muss sich eine Klasse/Struktur/Union befinden.

Also diese ganzen Fehler kommen glaub ich weil ja [if (g_pFramework->Init (800, 600, 16, true) == false)] einen Wert zurückliefern muss oder?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

8

14.06.2010, 18:21

die tags benutzt du so:
[ cpp ] quelltext [ /cpp] ohne leerzeichen innerhalb der eckigen klammern.
ich find in dem code keinen fehler der zu der meldung passt. eigentlich müsste er schon beim aufruf der funktion StarteSpiel() meckern weil die deklaration fehlt.
du könntest ja mal das ganze projekt hoch laden. ich schau es mir dann in ca 40min an(muss kurz wech).
hast du denn während du das buch gelesen hast auch etwas in der konsole programmiert? das ist sehr wichtig.
"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?

~*Geheim*~

unregistriert

9

14.06.2010, 18:39

Ok, Thx für cpp Tag, werd ich in Zukunft so machen) Mit Konsolenanwendung meinst du das ("schwarze Kästchen") oder die "Windows-Fenster", ich denke du meinst das Kästchen! Ich habe beides gemacht und ich weiß, dass man void deklarieren muss, aber irgentwie hat mein PC das falsch gespeichert! (Er ist vorher abgesturzt..) Also hier das Projekt.. ich hab echt nicht viel Ehrfahrung und habe nur ("probiert") ein Menü anzuhängen... Find ich echt sehr sehr nett von Dir, dass Du Dir die Zeit nimmst meinen Text anzusehen...^^ Wie kann ich das "ganze" Projekt hochladen? Ich kenn mich noch nicht so gut aus sry...

10

14.06.2010, 18:50

/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »E333« (02.09.2021, 12:44)


Werbeanzeige