今こそプログラミングを学ぼう!簡単なゲーム作成をいちから徹底解説!

記事
IT・テクノロジー
こんにちは!現役システムエンジニア@育休中のtak_kです!😁
本業でシステムエンジニアをしているかたわら、複業でプログラミング講師や、初学者向けにプログラミング学習をサポートする『メンター』をやっています!

前回の振り返り

left-297787_640.png
前回の記事で、以下の話をしました。

・プログラミングが義務教育に導入決定 → つまり「社会人として最低限の教養知識」となっている!
・実は、私たちの身の回りには「プログラム」で溢れている。社会の発達に伴って「プログラミング」の知識は全員に必要!
・そうは言っても、いきなりプログラミングを勉強するのもハードルが高い。。。私たちにとって身近にある、簡単な「ゲーム」を作ってみることから始めよう!
前回記事へは以下リンクからどうぞ!

「ハイ&ロー(HIGH & LOW)ゲーム」を作ってみよう!

card-game-570698_640.jpg
では簡単なゲームを作ってみよう!ということで、「ハイ&ロー(HIGH & LOW)ゲーム」というゲームを作ってみましょう!

「ハイ&ロー(HIGH & LOW)ゲームってどんなゲーム?」という方もいると思います。いわゆるパーティーゲームの1つなのですが、検索で出てきた「ハイ&ローゲーム」の概要を引用します。
自分の引くカードが、前の人の引いたカードよりも、大きいか(ハイ)、小さ いか(ロー)当てていき、不正解の人は抜けていきます。最後に残った人が優勝です。
つまり、前の人のカード(数字)よりも大きい(ハイ)か小さい(ロー)かを当てるゲームですね。簡単ですね!😆

ではこれから、この「ハイ&ローゲーム」をプログラミングで作っていきましょう!
次の流れで進めていきましょう。

ゲーム作成の全体の流れ

business-idea-534228_640.jpg
ゲームを作ると言っても、いきなりプログラムを書き始めるのではありません。
以下のように順を追って進めていきます。
※実際のシステム開発で使う用語を、【】の中に記載しています。
①ルールを整理して日本語で記述 〜 【要件定義】
 ↓ 
②整理結果をもとに、処理の流れを図で表現 〜 【設計】
 ↓
③流れの図をもとに、プログラミングを作る 〜 【製造】

①まずはゲームのルールを日本語で整理しよう!

circle-2470306_640.jpg
ゲーム全体のルールは、先程出した以下の通りです。
前の人のカード(数字)よりも大きい(ハイ)か小さい(ロー)かを当てるゲーム
もう少し細かく情報を整理するために、ゲームを時系列で表現して、箇条書き形式で日本語で書いてみましょう。
(1) 1番目の数字として、0〜9の数字をランダムに画面に表示する
(2) プレイヤーに「HIGH」か「LOW」を選択させる
(3) 2番目の数字として、0〜9の数字をランダムに画面に表示する
 ※ただし、1番目の数字と同じ数字は出ないようにする
(4) 1番目の数字と2番目の数字を比較して、大小関係がプレイヤーの選択と一致していれば「当たりです!」を表示し、一致していなければ「ハズレです。。。」を表示する
こんな感じでしょうか?
もちろん、書き方や粒度は「これでなければいけない!」という正解は無いので、ゲームのルールを確認するために誤解が生じないレベルであればOKです。

②ルールに沿って、ゲームの流れを図で書いてみよう!〜フローチャートを書く

mark-516279_640.jpg
ゲームのルールを箇条書きレベルで整理できたら、次はもう一歩記載粒度を小さくして、ゲームの流れを図で表現して整理してみましょう!

「もう一歩記載粒度を小さく」とはどういうことでしょうか?
先程の例で言うと、以下のような記載は意味合いとして曖昧さが残っているため、コンピュータはそのまま正しく処理することができないです。
※人間なら「空気を読んで」理解できますが、コンピュータは「空気を読む」と言う能力は備わっていないのです。。。
■記載粒度を小さくするポイント①
※ただし、1番目の数字と同じ数字は出ないようにする
コンピュータには、「同じ数字が出ないようにする」という器用なことはできないので、この状態を再現するために、処理をさらに細分化する必要があります。
今回の場合は、こんなイメージになります。
(1) 2番目の数字として、0〜9の数字をランダムに取り出す
(2) 2番目の数字と1番目の数字を比較して、数字が等しい場合、
  再度2番目の数字として、0〜9の数字をランダムに画面に取り出し、両者の数字が等しい限り繰り返す
■記載粒度を小さくするポイント②
大小関係がプレイヤーの選択と一致していれば
「大小関係とプレイヤーの選択が一致」ということも、コンピューターには判断することができないんです。
※「大小関係」ってなんや!?「プレイヤーの選択」ってなんや!?という感じ。人間なら「わかるやろ!」って感じですが。。。
わたしたちから見たら、回りくどい表現になりますが、コンピュータが処理できるレベルに細分化したら、以下のようになります。
(1) 1番目の数字 < 2番目の数字 かつ プレイヤーの選択 = 「HIGH」の場合、
  「当たりです!」を表示する
(2) 1番目の数字 < 2番目の数字 かつ プレイヤーの選択 = 「LOW」の場合、
  「ハズレです。。。」を表示する
(3) 1番目の数字 > 2番目の数字 かつ プレイヤーの選択 = 「HIGH」の場合、
  「ハズレです。。。」を表示する
(4) 1番目の数字 > 2番目の数字 かつ プレイヤーの選択 = 「LOW」の場合、
  「当たりです!」を表示する


このようなポイントを意識して、処理の流れを図(フローチャート)で表現すると、このように整理できます。
フローチャート.png

③フローチャートに沿って、実際にプログラミングしてみよう!

coding-924920_640.jpg
コンピューターが処理できるレベルで細分化して、流れを図で整理できました!
これをもとに、いよいよプログラム作成に取り掛かっていきます!
続きは次回!

次回の予告

next-time-1462745_640.png
今回までで、これから作っていく「ハイ&ローゲーム」のルールと処理を整理し、プログラミングを始めていく準備が整いました!
次回以降、処理の一つ一つを取り上げて解説しながら、プログラミングをしていきます!


プログラミング学習をサポートします!

woman-3597095_640.jpg
プログラミングの学習は、一人だととても挫折しやすいんですよね。
そんな方のために、現役エンジニアで指導経験もある私が、プログラミング学習のお悩み相談に乗るサービスを提供しています。
「何をしてくれるのかよくわからない!」という方も、お気軽にメッセージで問い合わせてくださいね!
※問い合わせるだけなら「タダ」です!😂
また、小中学生向けのプログラミング教育の場で、「scratch」というプログラミング言語がよく使われてます。
難しそうなプログラミングのイメージとは違って(まさに本章の見出し画像のようなイメージ😅)、視覚的/直感的にわかりやすいのが特徴で、お子様でも楽しく遊び感覚で、プログラミング的な思考力を養うことができます。
こちらもお気軽にお問い合わせください!

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す