Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Zwischen Funktionen springen (http://www.informatikerboard.de/board/thread.php?threadid=1253)
Geschrieben von nano99 am 26.07.2012 um 18:36:
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...
Geschrieben von Karlito am 26.07.2012 um 22:34:
Hallöchen,
du hattest einen Klammerfehler und ein paar weitere kleinere in deinem Programm.
Aber kleine Fehler sind normal

Immer schön weiter machen

. 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
Geschrieben von nano99 am 28.07.2012 um 20:29:
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;
}
Geschrieben von Karlito am 30.07.2012 um 11:48:
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
Forensoftware: Burning Board, entwickelt von WoltLab GmbH