probleme bei mein adventure game

Bansi+

Mitglied
hi, da ich versuche c++ zulernen, code ich mir ein "adventure" game
aber es kommen fehler bei meiner funktion

Code:
#include <iostream.h>

	void schubladeauswahl() 
	{
	char schublade;
	cout << "In welche Schublade moechten Sie oeffnen ?" << endl;
	cout << "Schublade Nr.: ";
	cin >> schublade;
	}

	void main(void)
	{
		char schublade;
		int schubladeauswahl;
		bool pistole, hevmodul, akten;
		char mitnehmen[1];
		char ja[1];

		switch (schublade) {
		case 1:
			cout << "In dieser Schublade befinden sich ein paar Akten ueber Dr. Freeman!" << endl;
			cout << "Mitnehmen ? (j/n)";
			
			cin >> mitnehmen[1];
			
			if ( mitnehmen[1] == 'j' )
			{
				akten = true;
				cout << "...mitgenommen!" << endl;
			}
			else 
			{
				cout << "Die andren Schubladen durchsuchen ?" << endl;
				cout << "Ja/Nein ? (j/n)";

				cin >> ja[1];
				if ( ja[1] == 'j' )
				{
				schubladeauswahl();
				}
			}
		
			break;
		case 2:
			cout << "In dieser Schublade liegt eine Pistole!" << endl;
			cout << "Wem die wohl gehoert ?" << endl;
			cout << "Mitnehmen ? (j/n)";

			cin >> mitnehmen[1];
			
			if ( mitnehmen[1] == 'j' )
			{
				pistole = true;
				cout << "...mitgenommen!" << endl;
			}
			else 
			{
				cout << "Die andren Schubladen durchsuchen ?" << endl;
				cout << "Ja/Nein ? (j/n)";

				cin >> ja[1];
				if ( ja[1] == 'j' )
				{
				schubladeauswahl();
				}
			}
		
			break;
		case 3:
			cout << "In dieser Schublade liegt ein Modul fuer den HEV Suit!" << endl;
			cout << "Mitnehmen ? (j/n)";

			cin >> mitnehmen[1];
			
			if ( mitnehmen[1] == 'j' )
			{
				hevmodul = true;
				cout << "...mitgenommen!" << endl;
			}
			else 
			{
				cout << "Die andren Schubladen durchsuchen ?" << endl;
				cout << "Ja/Nein ? (j/n)";
				cin >> ja[1];
				if ( ja[1] == 'j' )
				{
				schubladeauswahl();
				}
			}
		

			break;
		case 4:
			cout << "In dieser Schublade ist nichts außer ein bisschen Staub." << endl;
			cout << "Mitnehmen ? (j/n)";

			cin >> mitnehmen[1];
			
			if ( mitnehmen[1] == 'j' )
			{
				cout << "Das packe ich nicht an... da mache ich mich womoeglich noch dreckig!" << endl;
			}
			else 
			{
				cout << "Die andren Schubladen durchsuchen ?" << endl;
				cout << "Ja/Nein ? (j/n)";
				cin >> ja[1];
				if ( ja[1] == 'j' )
				{
				schubladeauswahl();
				}
			}
		

			break;
		default:
			cout << "So viele Schubladen hat dieser Aktenschrank nicht!" << endl;
			break;
		};

		cout << "Ploetzlich oeffnet sich die Tuer zum Buero und ein Soldat tritt ein!" << endl;
		if ( pistole == true )
			cout << "Sie haben ihn mit der Pistole ueberwaeltigt!" << endl;
		else if ( akten == true )
		{
			cout << "Als sie sich jedoch gerade nach den Akten gebueckt haben, ging die abgefeuerte" << endl;
			cout << "Patrone des Soldaten vorbei und sie konnten entkommen!" << endl;
		}
		else if ( hevmodul == true )
			cout << "Sie haben das HEV Modul eingesetzt, dass sie vor einschlagenden Schuessen schuetzt!"<<endl;
		else
			cout << "Sie haben nichts um sich zu verteidigen und wurden erschossen\nGAME OVER!";
	}

Fehler:

C:\Dokumente und Einstellungen\-sTh.Seb-\Eigene Dateien\c++\adventure\agent.cpp(39) : error C2064: Ausdruck ergibt keine Funktion
C:\Dokumente und Einstellungen\-sTh.Seb-\Eigene Dateien\c++\adventure\agent.cpp(64) : error C2064: Ausdruck ergibt keine Funktion
C:\Dokumente und Einstellungen\-sTh.Seb-\Eigene Dateien\c++\adventure\agent.cpp(87) : error C2064: Ausdruck ergibt keine Funktion
C:\Dokumente und Einstellungen\-sTh.Seb-\Eigene Dateien\c++\adventure\agent.cpp(110) : error C2064: Ausdruck ergibt keine Funktion

auf zeile 39, 64, 87, 110 steht
schubladeauswahl();

bitte helft mir :)
 
Benenn die Funktion "Schubladenauswahl" mal so, dass der Name nicht mit der Variable "Schubladenauswahl" kollidiert.

btw: an deiner Stelle würde ich mir über die Wirkensweise der zuvor genannten Funktion Gedanken machen.
In der aktuellen Fassung macht die nämlich mehr oder weniger gar nix (sprich nichts was auf den Programmfluss Einfluss hat; jede Änderung an "schublade" ist lokal, sobald die Funktion verlassen wurde wars das - ohne Rückgabewert(oder Pointer/Referenz)wirds nichts werden).
 
Dazu kommt noch, dass Du die Funktion main nicht als void definieren solltest. Visual C++ sieht das zwar nicht als Fehler, aber trotzdem ist das einfach falsch.
So ziemlich jeder andere Compiler wird Dir einen Fehler ausgeben, weil main() einfach int als Rückgabetyp haben sollte. Dann muss allerdings (zumindest direkt vor dem Ende der Funktion) ein Wert zurückgegeben werden. Normalerweise so:
Code:
int main()
{
    // ...
    return 0;
}
Der Wert wird vom Programm an das Betriebssystem zurückgegeben und durch diesen Wert wird normalerweise erkannt, ob das Programm fehlerfrei beendet wurde. Das steht beim Debuggen auch unten in der Ausgabe ("Anwendung wurde mit 0x00 beendet" oder sowas).
 
und außerdem:

dein argument bei "switch" ist vom typ "char". also musst du nicht "case 1:" sonder "case '1':" schreiben!!


mfg
umbrasaxum
 
stimmt. unglücklicherweise ist das aber sogar syntaktisch richtig, wenn man "case 1" schreibt.
allerdings bin ich mir gerade nicht ganz sicher, ob das überhaupt funktionieren wird. wenn ich mich richtig erinnere, dann kann man (zumindest in c und c++) bei switch nur zwischen ganzzahlen unterscheiden. daher würde ich an deiner stelle sowieso eher die variable als int definieren.
kann aber auch sein, dass ich da falsch liege, weil die variable vom typ char im prinzip auch nur eine einzelne ganzzahl zwischen 0 und 255 enthalten kann.
 

Neue Beiträge

Zurück