簡體   English   中英

“石頭,紙,剪刀” C++ 代碼的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM