C言語でBINGO Machineを作ってみた 解説編
C言語でBINGO Machineを作ってみた 仕組み
C言語でBINGO Machineを作ってみた 仕組み
8月に入り夏も本番ですが、良い子のみんなは宿題終わったかな?終わっていないそこのあなた!!夏休みの宿題にプログラミングはいかがですか?
今回はプログラムの大まかな流れを説明していきます。
ソースコードはこちら
なお、実行は自己責任で行ってください。
コンパイルして実行すると↓のようになります。
開発環境について
また、C言語の開発環境を構築したい場合は以下を参考にしてください。
コマンドプロンプトからサクラエディタを起動できるようにしてみた前編
コマンドプロンプトからサクラエディタを起動できるようにしてみた後編
本記事は以上の設定を行っている前提で説明を行います。
Bingo Machine概要
Bingo Machineで使用している変数
今回main関数の中で使用している変数は以下の3つです。
int length = 75; int num[length]; time_t seed = time(NULL);
それぞれの説明は以下の通り。
length:
抽選対象の数字がいくつあるのかを示しています。今回は標準的な1列15種類 × 5列 = 75に設定しています。
hit[]:
抽選で出た数字を保存しておく配列です。例えば hit[7] が 0 なら、7はすでに出た数字と判断します。hit[10] が 1なら、10はまだ出ていない数字です。
今回は0 ~ 74までの数字を利用するので要素数75の配列を準備します。長さのには上記のlengthを指定しています。
seed:
抽選で使用する乱数の初期設定で使います。今回はtime()関数で現在時刻を取得してそれを用います。
Bingo Machineで使用している関数
void resetNum(int length, int num[]); //配列の初期化用関数 int showSelectedNumber(int length, int num[]); //抽選済の数字を表示する関数 int lottely(int min, int range, int num[]); //抽選を行う関数
それぞれの説明は以下の通り。
void resetNum(int length, int num[]);
配列の初期化を行います。今回は、抽選結果を保存している配列numの初期化を行います。
int showSelectedNumber(int length, int num[]);
抽選結果を表示します。抽選ですでに出た数字は表示され、まだ出ていない数字はスペースが表示されます。
int lottely(int min, int range, int num[]);
抽選を行います。min ~ (min + range -1)の範囲の数字が抽選対象です。抽選結果は配列numに保存されます。
Bingo Machineの流れ
Bingo Machineの実行時の動きは以下のようになっています。
1.変数の準備と初期設定
変数length、変数num[]、変数seedを宣言
numの初期化(resetNum関数)
seedの初期化(time関数)
2.現在の抽選結果の表示
現在の抽選結果を表示(showSelectedNumber関数)
まだ出ていない数字があるー>3へ
すべての数字が出尽くしたー>終了
3.抽選に使用する乱数の初期化
乱数の初期シード(乱数を決めるための材料)を現在時刻を利用して初期化(srand関数)
4.キーボードから入力するまで現在の結果を表示
キーボードから入力があるまで現在の結果を表示(getc関数)
5.抽選を行う
抽選が実行される(lottely関数)ー>2へ戻る
流れを整理すると、ソースコードを読みやすくなりますね。
今回はここまで!!
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載