Also schreibe ich eine kleine Rock, Paper, Scissors Spielstruktur in C++ und ich bin auf einige Fehler gestoßen, die ich nicht verstehe.C++ Funktionen und merkwürdige Fehler
Der erste ist der Code erwartet ein ';' an der NumberToWord-Funktion, aber es sollte nicht, da es eine Funktion ist.
Ein weiterer Fehler ist zufällig eine der else-Anweisungen, die es nicht zu mögen scheint.
Vielleicht vermisse ich etwas, ich weiß es nicht, aber es sollte eine einfache Lösung sein.
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main()
{
int seed = static_cast <int> (time(0)); //Sets the random seed
srand(seed);
int winCount = 0;
string numberToWord (int x) {
string outputChoice;
if (x == 0) { outputChoice = "Rock"; }
else if (x == 1) { outputChoice = "Paper"; }
else if (x == 2) { outputChoice = "Scissors"; }
return outputChoice;
}
while (winCount < 3) {
int computerChoice = rand() % 4;
int userChoice;
cout << userChoice << endl;
cout << "Please Enter 0 for Rock, 1 for Paper, or 2 for Scissors: "; //Asks for user input
cin >> userChoice; //Inputs user input to variable
if (userChoice == computerChoice) {
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "Draw!" << endl;
}
else if ((userChoice == 1) && (computerChoice == 2)) { //Rock v Paper
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "Compuer wins!" << endl;
}
else if ((userChoice == 1) && (computerChoice == 3)) { //Rock v Scissors
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "You win!" << endl;
winCount += 1;
}
else if ((userChoice == 2) && (computerChoice == 1)) { //Paper v Rock
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "You win!" << endl;
winCount += 1;
}
else if ((userChoice == 2) && (computerChoice == 3)) { //Paper v Scissors
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "Compuer wins!" << endl;
}
else if ((userChoice == 3) && (computerChoice == 1)) { //Scissors v Rock
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "Compuer wins!" << endl;
}
else if ((userChoice == 3) && (computerChoice == 2)) { //Scissors v Paper
cout << "Compuer Choose: " << numberToWord(computerChoice) << endl;
cout << "You Choose: " << numberToWord(userChoice) << endl;
cout << "You win!" << endl;
winCount += 1;
}
}
return 0;
}
Danke für jede Hilfe!
Teil 2
einfach das Programm setzt nicht wie die '< <'. Ich benutze das gut in vielen anderen Programmen für Variablen, aber diesmal, wenn ich eine String-Variable verwendet, wirft es einen Fehler. Ich habe C++ - String-Variablen nachgeschlagen und es sieht so aus, als würde ich es richtig machen, weshalb ich den Grund für die Fehler nicht kenne.
Referenzen:
http://www.cplusplus.com/doc/tutorial/basic_io/
http://www.cplusplus.com/doc/tutorial/variables/
void displayOutput(int comp, int user, string winner) {
string compOutputChoice = "";
string userOutputChoice = "";
/*
if (comp == 0) { compOutputChoice = "Rock"; }
else if (comp == 1) { compOutputChoice = "Paper"; }
else if (comp == 2) { compOutputChoice = "Scissors"; }
if (user == 0) { userOutputChoice = "Rock"; }
else if (user == 1) { userOutputChoice = "Paper"; }
else if (user == 2) { userOutputChoice = "Scissors"; }
*/
cout << "Compuer Choose: " << compOutputChoice << endl;
cout << "You Choose: " << userOutputChoice << endl;
//cout << winner << endl;
return;
}
Errors:
Error (aktiv) kein Operator "< <" 32
Error (a ctive) keinen Operator "< <" 33
Fehler C2679 binärer '< <': kein Betreiber, die einen rechten Operanden vom Typ nimmt gefunden 'std :: string' (oder gibt es keine akzeptable Umwandlung) 32
Fehler C2679 binär ‚< <‘: fand kein Operator, der einen rechten Operanden vom Typ ‚std :: string‘ nimmt (oder es ist keine akzeptabler Umwandlung) 33
Sie sollten die Fehlermeldungen wörtlich in Ihrer Frage posten - als ** Text **, * nicht * Bild. –
Sie können innerhalb des 'main()' - Funktionskörpers keine andere Funktion definieren, es sei denn, es handelt sich um einen Lambda-Ausdruck. –
Das löst ein Problem, aber ich kann immer noch nicht die Funktion in Übereinstimmung mit cout >> verwenden, um es auszugeben – CTOverton