Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Zwischen Funktionen springen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Zwischen Funktionen springen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
nano99
unregistriert
Zwischen Funktionen springen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite 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...
26.07.2012 18:36
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Karlito: 26.07.2012 22:39.

26.07.2012 22:34 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
26.07.2012 22:53 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
nano99
unregistriert
Zwischen Funktionen springen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite 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;
}
28.07.2012 20:29
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

RE: Zwischen Funktionen springen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite 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
30.07.2012 11:48 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Zwischen Funktionen springen