【C++入門】数当てゲームを作成してみよう!

数当てゲーム画像 C++実践

ゲーム概要

この記事では、C++を使用したシンプルな数当てゲームのコードを紹介します。このゲームは、1から100までのランダムな数を当てるというシンプルなルールですが、その背後には重要なプログラミングの概念が隠されています。このゲームを作ることで以下の学びを得られます。

  1. 基本的なC++の文法:このゲームを作ることで、C++の基本的な文法(変数、ループ、条件分岐など)を学ぶことができます。
  2. 乱数の生成と利用:乱数を生成し、それをゲームの要素として利用する方法を学びます。
  3. ユーザー入力の取得と処理:ユーザーからの入力を取得し、それをプログラム内で適切に処理する方法を学びます。

ゲームを実行するための環境構築がまだの方は「C++を実行するための環境構築|初心者でも簡単!(Windows)」をご覧ください。

コード一覧

下記のコードをコピーしてVisual Studioで実行してみてください。

実行方法がわからない方は「C++でプログラムを動かしてみよう!」をご覧ください。

※コード欄にカーソルを当てると右上にコピーボタンが表示されます。

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    // 乱数を生成するためにシードを設定
    std::srand(std::time(0));
    
    // 1から100までのランダムな数を生成
    int target = std::rand() % 100 + 1;
    int guess;
    int attempts = 0;

    std::cout << "数当てゲームへようこそ!1から100までの数を当ててください。\n";

    // 正解するまでループを続ける
    do {
        std::cout << "あなたの推測: ";
        std::cin >> guess;
        attempts++;

        if (guess > target) {
            std::cout << "もっと小さい数です。\n";
        } else if (guess < target) {
            std::cout << "もっと大きい数です。\n";
        } else {
            std::cout << "おめでとうございます!正解は " << target << " でした。\n";
            std::cout << "あなたは " << attempts << " 回で正解しました。\n";
        }
    } while (guess != target);

    // プログラムが終了する前にユーザー入力を待つ
    std::cout << "プログラムを終了するにはEnterキーを押してください...";
    std::cin.ignore();
    std::cin.get();

    return 0;
}

コード解説

ライブラリのインクルード

#include <iostream>
#include <cstdlib>
#include <ctime>
  • #include <iostream>: 標準入力(キーボード)と標準出力(画面)を扱うためのライブラリです。
  • #include <cstdlib>: 乱数を生成するためのライブラリです。
  • #include <ctime>: 現在の時刻を取得するためのライブラリです。

main関数の開始

int main() {

C++プログラムのエントリーポイント(開始点)です。main関数はプログラムの実行が始まる場所です。

乱数生成の初期化

    std::srand(std::time(0));

ここで乱数を生成する準備をします。

  • std::srand(std::time(0)); は乱数のシード(初期化子)を現在の時刻で設定します。これにより、プログラムを実行するたびに異なる乱数が生成されます。

正解の数を設定

    int target = std::rand() % 100 + 1;

1から100までのランダムな数を生成します。

  • std::rand() % 100 は0から99までの乱数を生成します。
  • + 1 を加えることで、1から100までの乱数になります。
  • target という変数にその値を保存します。

変数の宣言

    int guess;
    int attempts = 0;
  • guess はプレイヤーが入力する推測の数を保存する変数です。
  • attempts はプレイヤーが何回推測したかをカウントする変数です。初期値は0です。

ゲーム開始メッセージの表示

    std::cout << "数当てゲームへようこそ!1から100までの数を当ててください。\n";

ゲームの開始を告げるメッセージを画面に表示します。

do-whileループの開始

    do {

do-while ループの開始です。これは、少なくとも一度はループの内容を実行するループです。

プレイヤーの推測を入力

        std::cout << "あなたの推測: ";
        std::cin >> guess;
  • std::cout << "あなたの推測: "; はプレイヤーに推測を入力するように促します。
  • std::cin >> guess; はプレイヤーの入力を guess 変数に保存します。

推測回数のカウント

        attempts++;

推測の回数を1回増やします。

推測のチェック

        if (guess > target) {
            std::cout << "もっと小さい数です。\n";
        } else if (guess < target) {
            std::cout << "もっと大きい数です。\n";
        } else {
            std::cout << "おめでとうございます!正解は " << target << " でした。\n";
            std::cout << "あなたは " << attempts << " 回で正解しました。\n";
        }

プレイヤーの推測が正解かどうかをチェックします。

  • if (guess > target) は、推測が大きすぎる場合の処理です。
  • else if (guess < target) は、推測が小さすぎる場合の処理です。
  • else は、推測が正解の場合の処理です。正解のメッセージと推測の回数を表示します。

ループの継続条件

    } while (guess != target);

プレイヤーの推測が正解でない限り、ループを続けます。

プログラム終了メッセージと終了待ち

    std::cout << "プログラムを終了するにはEnterキーを押してください...";
    std::cin.ignore();
    std::cin.get();

プログラムの終了前に、ユーザーにEnterキーを押すように促し、キーが押されるまで待ちます。

  • std::cout << "プログラムを終了するにはEnterキーを押してください..."; は、プログラムが終了する前に表示されるメッセージです。
  • std::cin.ignore(); は、入力バッファをクリアします。これは、前の入力がEnterキーで終わっている場合、そのEnterキーを無視するためです。
  • std::cin.get(); は、ユーザーがEnterキーを押すのを待ちます。

main関数の終了

    return 0;
}

main関数の終了です。return 0; はプログラムが正常に終了したことを示します。

このようにして、プログラムはユーザーが数を当てるまで繰り返し入力を求め、正解した後にメッセージを表示し、ユーザーがEnterキーを押すのを待ってから終了します。

まとめ

この数当てゲームは、C++の基本的な文法を学び、乱数の生成と利用、ユーザー入力の取得と処理といった重要なプログラミングのスキルを身につけられます。

  1. C++の基本的な文法の理解と実践:変数の宣言と初期化、ループの使用、条件分岐の理解といった基本的な文法を実際のコードで動かしてみました。
  2. 乱数の生成と利用:乱数を生成し、それをゲームの要素として利用する方法を学びました。
  3. ユーザー入力の取得と処理:ユーザーからの入力を取得し、それをプログラム内で適切に処理する方法を学びました。

プログラミングは、理論だけでなく、実際に手を動かしてコードを書くことが重要です。楽しみながら学んでいきましょう!


次のページ >> 【C++入門】計算クイズゲームを作成してみよう!

ゲームを実行するための環境構築がまだの方は「C++を実行するための環境構築|初心者でも簡単!(Windows)」をご覧ください。

コメント

タイトルとURLをコピーしました