Z
Hallo,
zwischendurch hab ich mal versucht, ein kleines Spielchen zu programmieren. Eigentlich klappt auch alles ganz gut, doch vieles könnte man noch vereinfachen und für manche Probleme finde ich auch keine Lösung dafür.
Nur mal vorweg: Der "goto-Befehl" am Ende war, ach wie soll ich's sagen...ääähm.....eine Art Notlösung. Ich hab mir schon gedacht, daraus ne "do-while-Schleife" zu machen. Wie auch immer, schaut euch doch mal den Code an:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string wort, loesungswort;
char buchstabe, jn, jn_2;
char a = 'J';
while(a == 'J' || a == 'j')
{
cout << "\t\t\t***** WORT-SPIEL ***** \n\n" <<endl;
cout << "SPIELER 1: " <<endl
<< "Geben Sie ein Wort in Grossbuchstaben ein mit " <<endl
<< "maximal 10 Buchstaben." <<endl<<endl;
cin >>wort; //FRAGE 1
cout << "\a\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" <<endl; //FRAGE 4
cout << "SPIELER 2:" <<endl
<< "Das Wort enthaelt " <<wort.length() << " Buchstaben. " <<endl
<< "Sie haben jetzt 10 Versuche, einzelne Buchstaben " <<endl
<< "zu raten, um damit das Loesungswort zu finden.\n\n " <<endl;
for(int i=1 ; i <= 10 ; ++i)
{
cout <<i << ". VERSUCH: " ;
cin >>a;
buchstabe = toupper(a);
if(buchstabe == wort[0])
cout << "\t\t\tDas ist der 1. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[1])
cout << "\t\t\tDas ist der 2. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[2])
cout << "\t\t\tDas ist der 3. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[3])
cout << "\t\t\tDas ist der 4. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[4])
cout << "\t\t\tDas ist der 5. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[5])
cout << "\t\t\tDas ist der 6. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[6])
cout << "\t\t\tDas ist der 7. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[7])
cout << "\t\t\tDas ist der 8. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[8])
cout << "\t\t\tDas ist der 9. Buchstabe im Wort!!!" <<endl;
if(buchstabe == wort[9])
cout << "\t\t\tDas ist der 10. Buchstabe im Wort!!!" <<endl;
if(buchstabe != wort[0] && buchstabe != wort[1] && buchstabe != wort[2] && buchstabe != wort[3] && buchstabe != wort[4] && buchstabe != wort[5] && buchstabe != wort[6] && buchstabe != wort[7] && buchstabe != wort[8] && buchstabe != wort[9]) //FRAGE 2
cout << "\t\t\tDas war der falsche Buchstabe!!!" <<endl;
cin.sync();
cin.clear();
}
cout << "\a\nLoesungswort in Grossbuchstaben eingeben: ";
cin >>loesungswort;
if(loesungswort == wort)
cout << "\n\nSIE HABEN GEWONNEN!!!" <<endl;
else
cout << "\n\nL O O S E R\tDas Loesungswort lautet: " <<wort <<endl;
cin.sync();
cin.clear();
wiederholen:
cout << "\n\nWollen Sie das Spiel wiederholen <J/N> ";
cin >> jn;
jn_2 = toupper(jn);
if( jn_2 == 'J')
a = 'J';
else if (jn_2 == 'N')
a = 'N';
else
{ cout <<"\nDas war nicht der entsprechende Buchstabe!!!" <<endl<<endl;
goto wiederholen; //FRAGE 3
}
cout << "\a\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" <<endl;
}
return 0;
}
Für die Fragen wird im Quellcode die passende Stelle markiet:
FRAGE 1: Wie kann ich einen eingelesenen String komplett in Großbuchstaben umwandeln???
FRAGE 2: Wie kann ich das vereinfachen??? (diese if-Anweisung soll eine Meldung ausgeben, wenn keiner der Buchstaben im Wort zutrifft)
FRAGE 3: Wie vermeide ich den "goto-Befehl" und mache daraus eine "do-while-Schleife"???
FRAGE 4: Wie kann ich den kompletten Bildschirm löschen, sodass der 2. Spieler das vom ersten Spieler eingegebene Wort nicht sehen kann???
ZUM PROGRAMM:
Der erste Spieler gibt ein Wort ein und der 2. Spieler muss innerhalb von 10 Versuchen einzelne Buchstaben zu raten, um damit auf das Lösungswort zu kommen.
Es wäre nett, wenn ihr mir weiterhelfen könntet.
Testet das Programm doch mal, vielleicht gefällts euch???
Schreibt doch, was ihr besser machen würdet oder wie man es erweitern kann.
Übrigens bin ich Anfänger und schon die Funktionalität und, dass das Programm überhaupt läuft, macht mich stolz und glücklich.
Ciao...
euer zocker001