Zwischen Funktionen springen |
26.07.2012, 18:36 | 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... |
|||||
|
||||||
26.07.2012, 22:34 | Auf diesen Beitrag antworten » | |||||
Karlito | 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.
VG, Karlito |
|||||
26.07.2012, 22:53 | 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 |
|||||
28.07.2012, 20:29 | 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; } |
|||||
Anzeige | ||||||
|
||||||
30.07.2012, 11:48 | Auf diesen Beitrag antworten » | |||||
Karlito | RE: Zwischen Funktionen springen
Das weis ich leider auch nicht. Dazu bräuchte man Informationen vom Hersteller. Da habe ich aber keine gefunden. VG, Karlito |
|