Zwischen Funktionen springen

Neue Frage »

Auf diesen Beitrag antworten »
nano99 Zwischen Funktionen springen

Meine Frage:
Hi!
Ich will ein Programm schreiben, in dem es ein Menü gibt, und in dem man ein kleines Spiel spielen kann.
Hier ist der Code:

#include <iostream>
#include <Windows.h>

using namespace std;

int vonlinks=1;

void menue()
{
system("cls");
cout << "MENUE\n==========\n\n";
cout << "Spiel starten <1>\n";
cout << "Anleitung <2>\n";
while((GetAsyncKeyState(0x31)&1 != 1) && (GetAsyncKeyState(0x32)&1 != 1)))
{
if((GetAsyncKeyState(0x31)&1 != 1))
{
spielstart();
}
else if((GetAsyncKeyState(0x32)&1 != 1))
{
anleitung();
}
}
}

void anleitung()
{
system("cls");
cout << "ANLEITUNG\n======\n\n";
cout << "Steuere deine Spielfigur (O) mit\nden Pfeiltasten. Wenn du\ndas @ erreichst, hast du\ngewonnen!\n\n";
cout << "Druecke: [ESC]\n";
while((GetAsyncKeyState(VK_ESCAPE)&1 != 1))
{
if((GetAsyncKeyState(VK_ESCAPE)&1 != 1))
{
menue();
}
}
}

void spielstart()
{
system("cls");
cout << "\n\n\n\n @";
cout << "\b\b\b\b\b\b\b\b\b\bO";
while(true)
{
if(GetAsyncKeyState(VK_RIGHT)&1 == 1)
{
cout << "\b O";
++vonlinks;
}
if(GetAsyncKeyState(VK_LEFT)&1 == 1)
{
cout << "\b \b\bO";
--vonlinks;
}
if(vonlinks == 10)
{
cout << "\n\n\n\nDu hast GEWONNEN!!!";
break;
}
}
}

int main()
{
menue();
return 0;
}

Jetzt ist mein Problem: ich bin in der Funktion "void menue()" und will, wenn die Taste 1 gedrückt wurde, zu der Funktion "spielstart()" springen. Hier zeigt mir der Compiler aber dann immer eine Fehlermeldung an.
Weiß jemand, wie der Code richtig lautet?

Meine Ideen:
hmmm...
 
Auf diesen Beitrag antworten »
Karlito

Hallöchen,

du hattest einen Klammerfehler und ein paar weitere kleinere in deinem Programm.

Aber kleine Fehler sind normal Augenzwinkern Immer schön weiter machen Daumen hoch . Willst du das auf deinem Taschenrechner laufen lassen? Ich denke da könntest du mit der Windows.h Probleme bekommen.

Ich weis noch nicht genau wie du auf dem Bildschirm mit einem Zeichen "herumwandern" kannst. Wenn ich dazu komme, schaue ich es mir noch mal an, oder es hilft dir jemand anderes.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
#include <iostream>
#include <Windows.h>

using namespace std;

int vonlinks=1;

void spielstart();
void anleitung();

void menue()
{
	system("cls");
	cout << "MENUE\n==========\n\n";
	cout << "Spiel starten <1>\n";
	cout << "Anleitung <2>\n";
	while(1)
	{
		if(GetAsyncKeyState(0x31))
		{
			spielstart();
			break;
		}
		else if(GetAsyncKeyState(0x32))
		{
			anleitung();
			break;
		}
	}
}

void anleitung()
{
	system("cls");
	cout << "ANLEITUNG\n======\n\n";
	cout << "Steuere deine Spielfigur (O) mit\nden Pfeiltasten. Wenn du\ndas @ erreichst, hast du\ngewonnen!\n\n";
	cout << "Druecke: [ESC]\n";
	while(1)
	{
		if(GetAsyncKeyState(VK_ESCAPE))
		{
			menue();
		}
	}
}

void spielstart()
{
	system("cls");
	cout << "\n\n\n\n @";
	cout << "\b\b\b\b\b\b\b\b\b\bO";
	while(true)
	{
		if(GetAsyncKeyState(VK_RIGHT))
		{
			cout << "\b O";
			++vonlinks;
		}
		if(GetAsyncKeyState(VK_LEFT))
		{
			cout << "\b \b\bO";
			--vonlinks;
		}
		if(vonlinks == 10)
		{
			cout << "\n\n\n\nDu hast GEWONNEN!!!";
			break;
		}
	}
}

int main()
{
	menue();
	return 0;
}


VG,

Karlito
Auf diesen Beitrag antworten »
Karlito

Schau dir mal http://en.wikipedia.org/wiki/Curses_%28p...ming_library%29 an. Das könnte dir viel ersparen, wenn du es nicht unbedingt alles selbst machen willst, was sicher auch seinen Reiz hast.

VG,

Karlito
Auf diesen Beitrag antworten »
nano99 Zwischen Funktionen springen

Hi!
Vielen Dank für deine Antwort!
Jetzt funktioniert alles.
Wenn ich das Programm auf meinem Taschenrechner laufen lassen möchte, was kann ich denn dann statt "Windows.h" nehmen? Oder muss ich dann komplett andere Funtionen verwenden?

Übrigens:
Hier ist ein Programm mit Menü, bei dem man mit einem O überall durch die Gegend wandern kann (rechts, links, oben, unten, es gibt nach rechts und unten eine Beschränkung):


#include <iostream>
#include <Windows.h>

using namespace std;

int vonoben=0;
int vonlinks=0;
int i;

void spielstart();
void anleitung();

void menue()
{
system("cls");
cout << "=====MENUE=====\n\n";
cout << "Spiel starten <1>\n";
cout << "Anleitung <2>";
while(1)
{
if(GetAsyncKeyState(0x31))
{
spielstart();
break;
}
else if(GetAsyncKeyState(0x32))
{
anleitung();
break;
}
}
}

void anleitung()
{
system("cls");
cout << "===ANLEITUNG===\n\n";
cout << "Steuere deine Spielfigur O\n";
cout << "mit den Pfeiltasten zu\n";
cout << "jeder beliebigen Position!\n\n";
cout << "Druecke waehrend des Spiels\n";
cout << "[ESC], um zum Menue gelangen.\n\n";
cout << "Druecke: [ESC]";
while(1)
{
if(GetAsyncKeyState(VK_ESCAPE))
{
menue();
}
}
}

void spielstart()
{
while(true)
{
system("cls");
for(i=0; i<=vonoben; ++i)
{
cout << "\n";
}
for(i=0; i<=vonlinks; ++i)
{
cout << " ";
}
cout << "O";

if(GetAsyncKeyState(VK_UP))
{
if(vonoben>=0)
{
--vonoben;
}
}
if(GetAsyncKeyState(VK_DOWN))
{
if(vonoben<=15)
{
++vonoben;
}
}
if(GetAsyncKeyState(VK_RIGHT))
{
if(vonlinks<=50)
{
++vonlinks;
}
}
if(GetAsyncKeyState(VK_LEFT))
{
if(vonlinks>=0)
{
--vonlinks;
}
}
if(GetAsyncKeyState(VK_ESCAPE))
{
menue();
break;
}
}
}

int main()
{
menue();
return 0;
}
 
Auf diesen Beitrag antworten »
Karlito RE: Zwischen Funktionen springen

Zitat:
Original von nano99
Wenn ich das Programm auf meinem Taschenrechner laufen lassen möchte, was kann ich denn dann statt "Windows.h" nehmen? Oder muss ich dann komplett andere Funtionen verwenden?


Das weis ich leider auch nicht. Dazu bräuchte man Informationen vom Hersteller. Da habe ich aber keine gefunden.

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »