0Pricing
C++ Academy · レッスン

数当てゲーム

乱数を使った小さなインタラクティブ数当てゲームを実装します。

「数当てゲーム」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

ゲームの方針

プログラムは 1..100 の範囲から秘密の数値を選びます。ユーザーが推測すると、プログラムは「大きすぎます」または「小さすぎます」と伝えます。決められた回数以内に正解するか、正しく推測できれば勝利です。

必要なヘッダー

乱数と入出力に使用します。

#include <iostream>
#include <random>
#include <string>

秘密の数値を生成する

最新の <random> 機能を使用します。シードは1回だけ設定してください。

std::random_device rd;
std::mt19937 engine(rd());
std::uniform_int_distribution<int> dist(1, 100);
int secret = dist(engine);

メインループ

プロンプトを表示し、読み取り、比較する処理を正解するまで繰り返します。

int guess;
int attempts = 0;
while (true) {
    ++attempts;
    std::cout << "Guess (1-100): ";
    if (!(std::cin >> guess)) break;
    if (guess == secret) {
        std::cout << "Got it in " << attempts << " tries\n";
        break;
    }
    std::cout << (guess < secret ? "too low" : "too high") << "\n";
}

試行回数を制限する

ゲームを難しくするため、試行回数の上限を追加します。

const int MAX = 10;
if (attempts >= MAX) {
    std::cout << "Out of tries! It was " << secret << "\n";
    break;
}

入力を検証する

ユーザーが数値以外を入力すると、cin は fail 状態になります。適切に復旧してください。

if (!(std::cin >> guess)) {
    std::cin.clear();
    std::cin.ignore(10000, '\n');
    std::cout << "Please enter a number\n";
    continue;
}

範囲外の推測

試行回数を数える前に、1..100 の範囲外の数値を拒否します。

if (guess < 1 || guess > 100) {
    std::cout << "Out of range\n";
    --attempts;     // not a real attempt
    continue;
}

リプレイループ

ゲーム終了後、もう一度プレイするかどうかをユーザーに尋ねます。

std::cout << "Play again? (y/n): ";
char reply;
std::cin >> reply;
if (reply != 'y') break;

統計情報を記録する

最高スコア、平均試行回数、勝利数などをゲーム間で保持します。

int wins = 0;
int bestAttempts = INT_MAX;
// update inside the win branch

範囲をカスタマイズする

ユーザーがイージー(1..10)、ミディアム(1..100)、ハード(1..1000)からモードを選べるようにします。それに応じて dist を調整してください。

ヒントシステム

任意で、何度か間違えた後に範囲を狭めます。「40以上です」のように伝えます。

関数に分割する

generateSecret()、readGuess()、playRound()、main() にリファクタリングします。各関数は1つの処理だけを担当します。

クイックチェック

最新の C++ で乱数を生成するには、どのヘッダーのインクルードが必要ですか。

まとめ

数当てゲームでは、乱数生成、入力検証、ループ、ゲーム状態を組み合わせます。小さな関数にリファクタリングし、リプレイ、統計情報、難易度を追加して完成度を高めてください。

よくある質問

「数当てゲーム」レッスンは無料ですか?

はい。「数当てゲーム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「数当てゲーム」で何を学びますか?

乱数を使った小さなインタラクティブ数当てゲームを実装します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「数当てゲーム」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. シンプルな電卓CLIの構築
  2. CSVファイルの読み書き
  3. 数当てゲーム
  4. 単語頻度カウンター
← C++ Academyに戻る