Zum Inhalt springen
Malarkey

Coder-Stübchen

Empfohlene Beiträge

Hab mal ein kleines Spiel gemacht

C++ Stein, Schere, Papier für 2 Spieler

Es müsste so im Großen und Ganzen passen, die Aufgabenstellung war eine SWITCH / Case Verzweigung. Hat jemand ne Idee wie man das stauchen könnte, da ich in der Switch Zuweisung ja nur die Variable eingeben kann?

# include <iostream>

# include <windows.h>

# include <cstdlib>

using namespace std;



int main ()

{

	

	int a, b;

	int c = 1;

	while (c == 1)

	{

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << " Stein, Schere, Papier, Brunnen - Spiel" << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << endl << endl;

	cout << " Spieler 1: \n" << endl;

	cout << " Bitte geben Sie eine der 4 Zahlen ein, die fuer \n";

	cout << " Stein, Schere, Papier oder Brunnen stehen. \n";

	cout << " 1 = Stein \n";

	cout << " 2 = Schere \n";

	cout << " 3 = Papier \n";

	cout << " 4 = Brunnen \n" << endl;

	cout << " Bitte Zahl von 1 - 4 eingeben: "; 

	cin >> a; cout << endl;

	Sleep (2000);

	cout << endl << endl;	

	cout << endl << endl;

	cout << endl << endl;	

	cout << endl << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << " Nun ist Spieler 2 an der Reihe" << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << endl << endl;

	cout << " Spieler 2: \n" << endl;

	cout << " Bitte geben Sie eine der 4 Zahlen ein, die fuer \n";

	cout << " Stein, Schere, Papier oder Brunnen stehen. \n";

	cout << " 1 = Stein \n";

	cout << " 2 = Schere \n";

	cout << " 3 = Papier \n";

	cout << " 4 = Brunnen \n" << endl;

	cout << " Bitte Zahl von 1 - 4 eingeben: "; 

	cin >> b; 

	cout << endl;

	cout << " Bitte haben Sie Geduld, wir berechnen das Ergebnis! \n";

	cout << endl << endl;	

	cout << endl << endl;

	Sleep (3000);





	if ((a > 0 && a < 5)&&(b > 0 && b < 5))

	{

	if (a == 1)

		{

			

		switch (b)

		{

		case 1:

			cout << "Die Runde endete Unentschieden! \n";

			cout << "+++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 1 hat gewonnen: Stein schlaegt Schere! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 2 hat gewonnen: Papier schlaegt Stein! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 2 hat gewonnen: Brunnen schlaegt Stein! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}

if (a == 2)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 2 hat gewonnen: Stein schlaegt Schere! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 1 hat gewonnen: Schere schlaegt Papier! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 2 hat gewonnen: Brunnen schlaegt Schere! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}



		}



if (a == 3)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 1 hat gewonnen: Papier schlaegt Stein! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 2 hat gewonnen: Schere schlaegt Papier! \n";

			cout << "+++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 1 hat gewonnen: Papier schlaegt Brunnen! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}

if (a == 4)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 1 hat gewonnen: Brunnen schlaegt Stein! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 1 hat gewonnen: Brunnen schlaegt Schere! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 2 hat gewonnen: Papier schlaegt Brunnen! \n";

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}



}

else

{

	cout << " Falsche Eingabe!!";

	cout << endl << endl;	

	cout << endl << endl;

	system ("Pause");

	}

	

	Sleep (2000);

	cout << " Wollen sie nochmal spielen? (Eingabe 1 fuer JA / Eingabe 2 fuer NEIN)";

	cin >> c;

	system ("cls");

	cout << endl << endl;	

	cout << endl << endl;

	}

	cout << "Vielen Dank fuers Spielen, bis zum Naechsten mal :-))  \n";

	cout << endl;

system ("Pause");

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schönes, ordentlich geschriebens Spiel :) . Als einzigsten Tip, welcher aber halt nur zum Inhalt ist: Einmal clear() nach dem Spieler 1 oder Spieler 2 gezogen hat, damit man nicht schummeln kann ;)

€: Ich merk gerade, du hast auch eine Vorliebe für Pseudo-Berechnungen. Hochkomplex im innersten des CPU ausgerechnete Formeln... Einfach mal Sleep(3000). Kommt halt immer besser, wenn das Teil mal 'lädt'. :D Ich schreib mir dafür immer gleich eine Funktion, welche dann noch drei Pünktchen im 'Bitte Warten'-Stil aufblinken lässt. ^^

Bearbeitet von Malarkey
Link zu diesem Kommentar
Auf anderen Seiten teilen

hehe nice, hab noch ein bisschen was verändert, und noch ne Gewinnstatistik gemacht:

ist clear() ein Befehl und welche Bibliothek brauche ich? (cin.clear (); mit <iostream> funzt ned)

Schönheitsfehler : Sollte sofort nach einer falschen Eingabe abbrechen....

# include <iostream>

# include <windows.h>

# include <cstdlib>

using namespace std;



int main ()

{

	

	int a, b, d = 0 , e = 0;

	int c = 1;

	while (c == 1)

	{

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << " Stein, Schere, Papier, Brunnen - Spiel" << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << endl << endl;

	cout << " Spieler 1: \n" << endl;

	cout << " Bitte geben Sie eine der 4 Zahlen ein, die fuer \n";

	cout << " Stein, Schere, Papier oder Brunnen stehen. \n";

	cout << " 1 = Stein \n";

	cout << " 2 = Schere \n";

	cout << " 3 = Papier \n";

	cout << " 4 = Brunnen \n" << endl;

	cout << " Bitte Zahl von 1 - 4 eingeben: "; 

	cin >> a; cout << endl;

	Sleep (2000);

	cout << endl << endl;	

	cout << endl << endl;

	cout << endl << endl;	

	cout << endl << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << " Nun ist Spieler 2 an der Reihe" << endl;

	cout << "++++++++++++++++++++++++++++++++++++++++" << endl;

	cout << endl << endl;

	cout << " Spieler 2: \n" << endl;

	cout << " Bitte geben Sie eine der 4 Zahlen ein, die fuer \n";

	cout << " Stein, Schere, Papier oder Brunnen stehen. \n";

	cout << " 1 = Stein \n";

	cout << " 2 = Schere \n";

	cout << " 3 = Papier \n";

	cout << " 4 = Brunnen \n" << endl;

	cout << " Bitte Zahl von 1 - 4 eingeben: "; 

	cin >> b; 

	cout << endl;

	cout << " Bitte haben Sie Geduld, wir berechnen das Ergebnis! \n";

	cout << endl << endl;	

	cout << endl << endl;

	Sleep (3000);





	if ((a > 0 && a < 5)&&(b > 0 && b < 5))

	{

	if (a == 1)

		{

			

		switch (b)

		{

		case 1:

			cout << "Die Runde endete Unentschieden! \n";

			cout << "+++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 1 hat gewonnen: Stein schlaegt Schere! \n";

			d = d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 2 hat gewonnen: Papier schlaegt Stein! \n"; 

			e = e + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 2 hat gewonnen: Brunnen schlaegt Stein! \n"; 

			e = e + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}

if (a == 2)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 2 hat gewonnen: Stein schlaegt Schere! \n";

			e = e + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 1 hat gewonnen: Schere schlaegt Papier! \n";

			d = d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 2 hat gewonnen: Brunnen schlaegt Schere! \n";

			e = e + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}



		}



if (a == 3)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 1 hat gewonnen: Papier schlaegt Stein! \n";

			d= d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 2 hat gewonnen: Schere schlaegt Papier! \n";

			e = e + 1;

			cout << "+++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Spieler 1 hat gewonnen: Papier schlaegt Brunnen! \n";

			d = d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}

if (a == 4)

		{

			

		switch (b)

		{

		case 1:

			cout << "Spieler 1 hat gewonnen: Brunnen schlaegt Stein! \n";

			d = d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 2:

			cout << "Spieler 1 hat gewonnen: Brunnen schlaegt Schere! \n";

			d = d + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 3:

			cout << "Spieler 2 hat gewonnen: Papier schlaegt Brunnen! \n";

			e = e + 1;

			cout << "++++++++++++++++++++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;

		case 4:

			cout << "Die Runde endet unentschieden! \n";

			cout << "++++++++++++++++++++++++++++++ \n";

			cout << endl << endl;	

			cout << endl << endl;

			break;			

		}

		

		}



}

else

{

	cout << " Falsche Eingabe!!";

	cout << endl << endl;	

	cout << endl << endl;

	system ("Pause");

	}

	

	Sleep (2000);

	cout << "Statistik: Spieler 1 hat " << d << " mal gewonnen \n";

	cout << "Statistik: Spieler 2 hat " << e << " mal gewonnen \n";

	cout << endl << endl;

	cout << " Wollen sie nochmal spielen? (Eingabe 1 fuer JA / Eingabe 2 fuer NEIN)";

	cin >> c;

	system ("cls");

	cout << endl << endl;	

	cout << endl << endl;

	}

	cout << "Vielen Dank fuers Spielen, bis zum Naechsten mal :-))  \n";

	cout << endl;

system ("Pause");

return 0;

}

Bearbeitet von SWIZZ=kettcar=
Link zu diesem Kommentar
Auf anderen Seiten teilen

Einfach system("cls"); an die gewünschte Stelle. Mit clear() hab ich mich vertan, das gibts gar nicht, glaub ich. :D

€: Ach, irgendwie hab ich jetzt die Lust an C++ wieder... Hab nur immer so wenig Zeit... Mal sehn... Vielleicht Code ich morgen mal was^^

€2: Pack doch Alle IF's für die gewählte Zahl noch in eine If. Also If Auswahl ist zwischen 1-4, weiter ausführen, else cout<<"Falsche Eingabe"<<.

Oder was meinst du? Aber eigentlich geht ja auch eine einfache Else. Ich hab mir den Code jetzt aber auch nicht nochmal angeguckt, mal ich gleich mal. Nur steht grad ein Beutel Reis auf'm Herd :D

Ich versuch später mal, den Code vielleicht zu kürzen. Ich bin mir nicht sicher, aber es müsste eine Möglichkeit geben, auch ohne vier Abfragen das richtige Ergebniss rauszubekommen und darzustellen.

Bearbeitet von Malarkey
Link zu diesem Kommentar
Auf anderen Seiten teilen

ja, hab hier grad ne Lösung mit nem zweidimensional Array gesehen die Supershort ist, aber jetzt ist MIttag^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau :D

Ach, die hab ich schon wieder total vergessen :(

Muss mal wieder lernen. Hätt' nicht gedacht, dass man C++ auch wieder verlerenen kann, aber einige Sachen weiß ich nicht mehr. Vorallem diese Reizthemen wie Zeiger und Vektoren^^.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verzweifle grad an VBA...

Ich suche ne Möglichkeit, die tatsächlich vorhandenen Werte in einem Array zu zählen.

Nehmen wir an, ich dimensionier das als 100 Zeilen-Liste und fülle die bis 50. Dann will ich aber auch nur 50 zurückbekommen und nicht wie jeder andere Programmierer in den Weiten des Internets 100.

Wie krieg ichs hin?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kenn mich mit VBA jetzt garnicht aus, aber schreib doch zur Not immer hinter das zuletzt eingefügte Element ein Sonderzeichen und durchlaufe das Array mit ner Schleife bis zum Sonderzeichen und inkrementiere beim Durchlauf jedesmal ne Zählervariable, dann weißt du wieviele Schritte die Schleife gemacht hat ergo hast du die Anzahl der Elemente.

Edit:

+du

Bearbeitet von Buggy McDermit
Link zu diesem Kommentar
Auf anderen Seiten teilen

Für Neuankömmlinge im Bereich C++ Lektüre zum guten Preis:

C++ lernen und professionell anwenden <- Sehr gutes Buch!

C++ von A bis Z

Sind normal durchstudiert, mit den typischen angedotzten Ecken, ein zwei Flecken, sonst in sehr gepflegtem Zustand.

Bearbeitet von Malarkey
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin grad so hirngevikkt von dieser Abfrage, die nicht richtig funktioniert, das ich das jetzt hier reinstelle und aus dem Unterricht geh und eine rauche, ich kann nicht mehr, geschweige denn einen Fehler finden.

# include <iostream>

# include <Windows.h>

# include <string.h>

# include <ctype.h>

using namespace std;



int main()

{

	int a = 0, i;

	char wahl[10];

	char namen[6][8] = {"gets","cout","cin","switch","getline","strncpy"}; 

	cout << " WILLKOMMEN ZU NAMENRATEN!\n";

	cout << "+++++++++++++++++++++++++++++\n";

	cout << endl << endl << endl;

	



	while (a == 0)



	{



		cout << "Bitte geben sie einen Namen ein: \n";

		cout << "(gets, cout, cin, switch, getline, strncpy)";

		cout << endl;

		cin >> wahl;

		cout << endl;

		

		

		for ( i= 0; i<6; i++ )

		{

		

		if (strcmp(wahl,namen[i])==0)

				{	

					cout << "Das ist ein c++ Befehl!\n";

				}

			if (strcmp(wahl,namen[i])==1)

				{

					cout << "Das ist kein c++ Befehl!\n";

				}
}

cout << endl;
cout << "Wiederholen ? 1 = NEIN, 0 = JA ";
cin >> a;

}
system ("pause");
return 0;

}[/codebox]

Bearbeitet von =kettcar=
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi kann mir hier einer helfen?

Mein Prof will von mir das wir einen Palindromtest schreiben. Soweit so gut..allerdings blicke ich absolut nicht durch die Aufgaben Stellung.

Divide your program into three functions distributed into three files (two modules):

First file (e.,g. pdmain.c): main function for input and output

Second file (e.,g. palindrome.c)

Function isPalindrome(...);

Function lengthOfString(...);

Third file (e.,g. palindrome.h): header file for the second file, contains the prototypes of the function isPalindrome(...).

Weiß jemand wie ich das lösen kann? bzw. er von mir möchte?

Bearbeitet von PrometheusX
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden


  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.