[英]Problem with “Rock, paper, scissors” C++ code
我知道有不同的方法可以為“Rock, Paper, Scissors”游戲編寫代碼。 但是我嘗試根據我對C++的基本知識編寫以下代碼。
using std::cin;
using std::cout;
using std::endl;
int main(int argc, char** argv) {
enum object {rock, paper, scissors}
object player1, player2;
cout <<"Enter two objetcs (objects include rock, paper or scissors):";
cin >>player1 >> player2;
if (player1==player2) cout <<"objects are equal";
else if (player1==rock && player2=paper cout << "player 2 is the winner";
else if (player1==rock && player2=scissors cout<<"player 1 is the winner";
else if (player1==paper && player2=rock) cout << "player 1 is the winner";
else if (player1==paper && player2=scissors) cout <<"Palyer 2 is the winnder";
else if (player1==scissors && player2=paper) cout << "Player 1 is winner";
else cout <<"Player 2 is the winner";
}
編譯器(Dev-C++)
發現錯誤cin >>player1 >> player2;
行,解釋說"In Function 'int main(int, char**): [error] expected initializer before 'player1'"
。 我不明白這個警告的含義。 如何在不對其結構進行太多更改的情況下改進此代碼?
enum object {rock, paper, scissors}
缺少分號 (;)
由於您的輸入和枚舉類型之間沒有映射,因此實際上只能確定直接相等,否則會觸發最后一個 else 語句。 下面我使用接受cin
提供的char
值的解決方案修改了您的代碼,然后使用它們的 enum 值設置對象。 您還有幾個錯別字,缺少括號、分號和等號,因此請通讀並注意差異。 這不僅會修復編譯器錯誤,還會使您的代碼按預期運行。
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main(int argc, char** argv) {
enum object {rock, paper, scissors};
object player1, player2;
cout << "Enter two objetcs (objects include rock, paper or scissors):";
char p1, p2;
cin >> p1 >> p2;
if (p1 == 'r') {
player1 = rock;
}
else if (p1 == 'p') {
player1 = paper;
}
else if (p1 == 's') {
player1 = scissors;
}
else {
cout << "invalid input, play again" << endl;
exit(1);
}
if (p2 == 'r') {
player2 = rock;
}
else if (p2 == 'p') {
player2 = paper;
}
else if (p2 == 's') {
player2 = scissors;
}
else {
cout << "invalid input, play again" << endl;
exit(1);
}
if (player1==player2) cout <<"objects are equal";
else if (player1==rock && player2==paper) cout << "player 2 is the winner";
else if (player1==rock && player2==scissors) cout<<"player 1 is the winner";
else if (player1==paper && player2==rock) cout << "player 1 is the winner";
else if (player1==paper && player2==scissors) cout <<"Palyer 2 is the winnder";
else if (player1==scissors && player2==paper) cout << "Player 1 is winner";
else cout <<"Player 2 is the winner";
cout << endl;
}
了解類型以及如何在原始代碼中無法確定哪些輸入對應於 object 的枚舉是非常重要的。
我認為您對 c++ 的基礎知識有些欠缺。 我正在添加正確版本的代碼,以便您檢查差異。
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
enum object {rock, paper, scissors};
char player1, player2;
cout <<"Enter two objetcs (objects include rock, paper or scissors):";
cin >> player1 >> player2;
if (player1==player2)
cout <<"objects are equal";
else if (player1==rock && player2==paper)
cout << "player 2 is the winner";
else if (player1==rock && player2==scissors)
cout<<"player 1 is the winner";
else if (player1==paper && player2==rock)
cout << "player 1 is the winner";
else if (player1==paper && player2==scissors)
cout <<"Palyer 2 is the winnder";
else if (player1==scissors && player2==paper)
cout << "Player 1 is winner";
else
cout <<"Player 2 is the winner";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.