C++言語は複雑ですが、データ型、メモリ管理、コードのリンクについて多くのことを教えてくれます。
プログラミング言語を学ぶにはいくつかの方法があります。コーディングが初めての場合、通常は基本的なコンピュータ・コーディングの概念を学び、それを応用しようとします。すでに別の言語でコーディングする方法を知っている場合は、コーディングの概念が新しい言語でどのように表現されるかを学び直すことができます。
いずれにせよ、これらの新しい原則を学ぶのに便利なのは、簡単な推理ゲームを作ることです。そうすることで、その言語がどのように入力を受け取り、出力を送るのか、どのようにデータを比較するのか、どのようにプログラムの流れを制御するのか、どのように条件を使って結果に影響を与えるのかを理解することができます。例えば、Luaや スクリプトとして簡単に実行できますが、 クラスを作成する必要があります。
この記事では、 Bash 端末上で推理ゲームを実装する方法を紹介します。
依存関係のインストール
この記事に従うには、C++とコンパイラが必要です。
Linux では、ディストリビューションのリポジトリから Qt Creator IDE をインストールすることで、必要なものをすべて入手できます。
Fedora、CentOS、またはRHEL上で:
$ sudo dnf install qt-creator
Debian、Ubuntu、Chromebook、または同様のもので:
$ sudo apt install qtcreator
この記事では Qt Creator IDE は使いませんが、必要なものをすべてインストールする簡単な方法で、複雑な C++ プロジェクトには欠かせないツールです。macOS または Windows では、Qt ウェブサイトのJava手順に従ってください。
包含と名前空間の設定
C++のコア言語は無駄がありません。単純なアプリケーションでさえ、追加のライブラリを使用する必要があります。このアプリケーションは C++ cout と cin キーワードにアクセスします。
また、プログラムがstd名前空間を使用していることを確認してください:
#include <iostream>using namespace std;
これは絶対に必要というわけではありませんが、名前空間を std に設定しないと、iostream ライブラリのすべてのキーワードに名前空間接頭辞が必要になります。例えば、coutと書く代わりに、std::coutと書かなければなりません。
C++の文はセミコロンで終了します。
関数の作成
すべてのC++アプリケーションには、少なくとも1つの関数が必要です。C++アプリケーションのmain関数はmainと呼ばれ、プロセスが成功したときに0を返し、失敗したときに他の値を返すという インストール方法 規定に従った整数を返さなければなりません。新しい関数を作成するには、戻り値の型と名前を指定します。
int main() {// code goes here
プログラム・ロジックの実施
ゲーム・コードはまず、プレイヤーが推測するための乱数を生成しなければなりません。C++では、擬似乱数を生成するためのものを構築することでこれを行うことができます。簡単なシードは現在の時刻です。シードがあれば、1から100までの数値を得ることができます。上限を100としてrand関数を呼び出すことで、0から99までの乱数を生成します。したがって、どのような数字が選ばれても1ずつ加算され、その結果がnumberという変数に代入されます。プレイヤーの推測を格納する変数も宣言する必要があります。わかりやすくするために、この変数をguessと呼ぶことにします。
srand (time(NULL));int number = rand() % 100+1;int guess = 0;cout << number << endl; //debug
do-while文とif文の追加
C++のdo-while文は、キーワードdoで始まり、C++に実行させたい処理をすべて括弧で囲みます。文の終わりは while キーワードで、その後に満たすべき条件を続けます:
// code here} while ( number != guess );
if文、else文、else文の間にゲームコードが表示され、プレイヤーにヒントを与えます。
cout関数は出力を標準出力に出力します。cout文はendl関数とくっついていないので、改行はありません。このcout文の直後に、cin関数を用いてC++に入力を待つように指示します。お察しの通り、cinはstdinからの入力を待ちます。
次に、プログラムはif制御文に入ります。プレイヤーの推測がnumber変数に含まれる擬似乱数より大きい場合、プログラムはプロンプトを出力し、その後に改行します。これでif文は改行されますが、C++は条件が満たされていないため、まだdo-whileループに捕らわれたままです。
プレイヤーの推測がnumber変数に含まれる擬似乱数より小さければ、プログラムはプロンプトを出力し、その後に改行します。これでif文は再び改行されますが、プログラムはまだdo-whileループに捕らわれたままです。
guessとnumberが等しいとき、キー条件が満たされ、else文が起動され、do-whileループが終了し、プログラムが終了します:
cout << "Guess a number between 1 and 100: ";cin >> guess;if ( guess > number) { cout << "Too high. " << endl; }else if ( guess < number ) { cout << "Too low. " << endl; }else {cout << "That's right! " << endl;exit(0);} // fi} while ( number != guess );return 0;} // main
ビルドコードとゲーム
GCCを使ってアプリケーションをビルドすることができます:
$ g++ -o guess.bin guess.cpp
バイナリを実行してみてください:
$ ./guess.binGuess a number between 1 and 100: 76Too high.Guess a number between 1 and 100: 1Too low.Guess a number between 1 and 100: 74That's right!
成功です!
C++をお試しください。
C++言語は複雑です。端末用の C++ アプリケーションを書くことで、データ型やメモリ管理、コードのリンクについて多くのことを学ぶことができます。便利なユーティリティを C++ で書いてみてください!




