Machine試作1号機【ビンゴを作ろう】この記事は2016年8月30日に書かれたものです。内容が古い可能性がありますのでご注意ください。Machine試作1号機C言語でBINGOを作ろう!C言語でBINGOを作ろう!CUI上で動くビンゴゲームの完成目指してひっそりとプログラムの勉強を始めました。前回は二次元配列の使い方を紹介しました。今回からはいよいよビンゴを作り始めます。こちらをご覧ください。C言語の開発環境を構築したい場合は以下を参考にしてください。本記事は以上の設定を行っている前提で説明を行います。Machineとは、ビンゴの抽選の機械です。Machineの構造どんなプログラムも、いきなり作れる人はいません。Machineでも同じです。プログラムの全体像を考えてみましょう。Machineにはどんな機能が必要でしょうか。・数字を選ぶ最低限必要な機能です。Machineとは呼べませんね。・抽選結果を表示する数字を選んでも、どの数字が出たのかを知る手段がないと抽選には使えません。Machineとは言えませんね。各機能を見てみましょう。数字を選ぶ数字を選ぶには・数字をランダムに選ぶ・結果を保存する・同じ数字は2度出さないといった機能が必要です。抽選結果を表示する抽選結果を表示するには・保存されている結果を読み込む・結果によって表示を切り替えるといった機能が必要です。して見ると、どちらの機能も数字の保存が必須です。数字を選ぶためにはランダムに数字を選ぶことが必要です。ランダムな数字は乱数(正確には疑似乱数)を用いて取得します。乱数はrand()関数を使用することで比較的手軽に利用できます。(ただし、rand()関数にはいろいろな問題がありますので、実際のプログラムではメルセンヌツイスタなどの利用をおすすめします。19169実行してみるとわかりますが、実際にはこのプログラムは何度実行しても同じ数字が出てきます。これは、乱数を作り出すための初期値(初期SEED)が設定されていないためです。この状態では何度動かしても、同じ数字が同じ順番で出てきます。そこで初期SEEDを設定する必要があります。初期SEEDの設定にはsrand()関数を利用します。seed);例えば下のような感じです。//7の代わりにいろいろな数字を入れて試してみてください。15521初期SEEDに設定されている値(7)をほかの数字に変更すれば様々な乱数が出てきます。これで様々な数字が出るようになりました。Machineを作ってみましょう。printf("抽選を開始します。//キーボードからなにか入力するまで画面を一時停止する。printf("%02dが出ました。0;}キーボードから文字を入力するごとに抽選が行われます。(10行目でキーボードからの入力を受け付けている。そのため、12345と入力すれば連続で6回※抽選されます。※Enterキーの入力もカウントします。10行目を消すととんでもないことになります。Machineは無限ループします。強制停止してください。・・・あれ、とんでもなく大きな数字が出ている・・・!?おまけ今回はwhile文で無限ループさせていますが、for文を使ったり、ループカウンタを導入したりすれば決まった回数だけ抽選することも可能です。いうことで、今日の宿題は↑これwて、手抜きや。前回の宿題は、「要素数3×4のint型の配列numを準備してください。その後、一度各要素の値を0で初期化してください。その後、numの要素に好きな値を代入してください。最後に、numの要素をすべて表示してください」でした。前回同様、長い・・・w解答は以下の通りです。確認用コードの行を外すと、実際にrowやcol、初期化直後のnumの各要素の値が表示されます。0;}実行結果※表示される数値は自分が作ったプログラム通りのものであれば下の通りである必要はありません。抽選を10回だけ行うBINGOMachine02.cを作成してください。あれ、これ今日やったような・・・?次回は試作1号機を改造して抽選される数字の範囲を調節します。