正解判定とか
あとは正解判定をして、正解の時はおめでとうメッセージを表示して終わるとかすれば完成です。
つまり
ルールのおさらい
今回のルール
- 被らない4桁の数字がランダムで生成され出題される
- プレイヤーは毎ターン4桁の数字を入力する
- コンピュータの応答として、入力した数字を答えと比べ以下を返す
- ヒット:位置も数字も答えと一致している桁数
- ブロー:数字はあっているけれども位置が違う数字の数
- ヒット=4の時は入力=出題なので、正解のメッセージを表示
- それ以外は、もう一度入力を促す。
- 正解するまでこれを繰り返す。
の部分をこしらえて完成!
正誤判定
文字列同士が同じかどうかはどうやったら判定できるっけ?
C言語では、 strcmp関数を使わないと文字列比較ができないですし、そもそも文字列という方がなかったので、文字配列+'\0'なんていう、疲れるものを使っていました。(みんなにも文字配列による文字列表現は教えたけど、C言語のことは知らんよね)
string同士の比較はどうやるかは教えてあると思うのでそれを使ってください。
そうすると、メインのループは以下のようになります。
- "正解判定入り入力ループ"
int main() { string answer = "0000"; //正答 string input = "0000"; //入力用 srand((unsigned int)(time(nullptr))); answer = MakeProblem(); cout << "THE HIT AND BLOW GAME" << endl; cout << "Let's Play the GAME!!" << endl; while (true) { cout << "予想した4桁の整数を入力:"; cin >> input; if (エラー処理で問題なかったら) { if(もし正解だったら) break;//どうせ正解したらループ抜けちゃうから、elseと書かなくてすむ //HIT数を数えて表示 cout << " Hit:" << HIT数カウント呼び出し << endl; //BLOW数を数えて表示 cout << "Blow:" << BLOW数カウント呼び出し << endl; } } //正解した時しかここにたどり着かない。 //ループの中で処理してもいいけど、今回はこんな感じにしてみました。 cout << "おめでとう!" << endl; cout << "答えは" << answer << "でした" << endl; return 0; }

