0

私のプログラムはつまようじのゲームをプレイするように作られています、私はしばらくそれで立ち往生しています。目標は、コンピューターに23のスタックからつまようじを引き出すことであり、人間も同じことをします。これまでのところ、私のロジックは機能していないようです。プレイヤーはつまようじの量を引き出すことができ、それは合計から取り出されていますが、コンピューターがつまようじを取り出すとき、それは1つのつまようじだけを取ります。私はプログラムに、残っている数とコンピューターが取り出す数を言わせました。コンピュータは常に1つのつまようじを取り出すので、スタックには常に1つのつまようじが残っているようですが、これは明らかに数学的に正しくありません。

#include <iostream>
#include <conio.h>
#include <cmath>

using namespace std;

int main()
{

int toothpicks = 23, human, comp;


cout<<"TOOTHPICKS!!!!!" <<endl;

while (toothpicks >0)
{
    cout<<"Human, take your toothpick(s)! But only between 1 and 3 toothpick(s), Thanks! ";
    cin>>human;

    toothpicks = toothpicks - human;
    cout<<toothpicks <<" toothpick(s) remaining" <<endl;

    if (toothpicks = 0)
    {
        cout<<"Human! You have prevailed!"<<endl;
        break;
    }

    if (toothpicks >4)
    {
        comp = 4 - human;   
        cout<<"The computer took " <<comp <<" toothpick(s)" <<endl;
    }
    else if (toothpicks = 2)
    {
        comp = 1;
        cout<<"The computer took " <<comp <<" toothpick(s)" <<endl;
    }
    else if (toothpicks = 3)
    {
        comp = 2;
        cout<<"The computer took " <<comp <<" toothpick(s)" <<endl;
    }
    else if (toothpicks = 4)
    {
        comp = 3;
        cout<<"The computer took " <<comp <<" toothpick(s)" <<endl;
    }
    else if (toothpicks = 1)
    {
        comp = 1;
        cout<<"The computer took " <<comp <<" toothpick(s)" <<endl;
    }

    toothpicks = toothpicks - comp;
    cout<<toothpicks <<" toothpick(s) remaining";

    if (toothpicks = 0)
    {
        cout<<"The computer has prevailed!"<<endl;
        break;
    }

}

_getche();
return 0;
4

2 に答える 2

3

比較には = (割り当てを実行する) ではなく == を使用します。

于 2012-10-12T21:47:15.460 に答える
0

これが実際のコードである可能性はありますか?=C ++で値を設定して==比較することを忘れてしまいます!行if (toothpicks = 0)で値を0にリセットしtoothpicks、C ++は0をfalseと見なすため、この行を無視し、すべて同じ問題がある場合は他の行を続行します。だからあなたはただ置き換え===言うべきですif (toothpicks == 0)またはelse if (toothpicks == 2)

于 2012-10-12T21:52:25.983 に答える