1

こんにちはim17と自分自身にc++を教えようとしています。私の最初のプロジェクトの1つとして、三目並べゲームを作成し、AIと対戦しようとしています。だから、問題を抱えているコードはこれです

main() {

    char player, computer;

    while (player != 'x' || player != 'o' )
    {
        cout << "do you want to be x or o?";
        cin >> player;
    };

    if (player == 'x' ) computer == 'o';
    else computer == 'x';

    cout << "player is: " << player << endl <<  "computer is: " << computer ;
    cout << computer;
};

「xまたはoになりたいですか?」というメッセージが表示されますが、xまたはoと入力すると、同じ質問が繰り返されます。whileループと関係があると思います。どんな助けでも大歓迎です。

4

5 に答える 5

7
char player, computer;

while (player != 'x' || player != 'o' ) {

まず第一に、player何にも初期化されていないので、ランダムなゴミが含まれています。あなたはそれから読んでいてはいけません。少なくとも、既知の値に初期化します。

第二に、あなたの条件は常に真になります。それがであると仮定しplayerます'x'。それは条件を満たしますplayer != 'o'

あなたはおそらく意味します:

while (player != 'x' && player != 'o') {
于 2012-02-21T05:08:42.743 に答える
5

ループの終了条件が間違っているので、一度尋ねるまでチェックしないでください。

do {
    cout << "do you want to be x or o?";
    cin >> player;
} while (player != 'x' && player != 'o');
于 2012-02-21T05:08:57.390 に答える
1

あなたの問題は条件付きです。私があなたが意味していると思うのはwhile (player != 'x' && player != 'o')、つまり、playerxでもoでもないときです。

于 2012-02-21T05:09:01.457 に答える
0
while ( (player == 'x' || player == 'o') == false )
于 2012-02-21T05:09:19.370 に答える
0
    char player = ' '; // always init variables
    while (player != 'x' && player != 'o' ) //exit if false, when player == x or == o
    {
        cout << "do you want to be x or o?";
        cin >> player;
    };
于 2012-02-21T05:15:31.617 に答える