目次
パソコンがなくてもプログラミング思考は鍛えられる!
皆さん、プログラミングはパソコンがあって、コードエディタがあって初めて出来るものだと思っていませんか?
そんなことはありません!プログラミング、正確に言うとプログラミング思考はパソコンがなくても鍛えることができます!
特に、皆さんが一度は触れたことがある「あるもの」を使うと、簡単に思考力を鍛えることが出来ちゃうんです。
「あるもの」がなんだか、想像がつきますか?
ゲームはどうやって作られているんだろう?
それは、ゲームです。
普段我々は何気なくゲームをしてると思います。RPGであれば、歩いていたら敵と遭遇し、攻撃をすることで相手のHPを削って、倒すことが出来たら自分の経験値がたまり、ある程度経験値がたまるとレベルが1つ上がり、新しいスキルが解放されて…といった具合です。
よく考えてみてください。
当たり前ですが、上記で紹介したような機能は、全部プログラムでロジックが記述されているんです。
つまり、人間が作ったロジックであるわけです。
ということは、同じ人間なのだから我々にも出来るはずですよね?
ということで、どんなロジックで記述されているのか、妄想してみましょう!
攻撃のロジックを考えてみよう!
例えば、
敵と戦闘中
- 選択肢のうちから「たたかう」を選択すると、
- 攻撃を実施する
というドラ◯エのような戦闘アルゴリズムを考えてみましょう。
まず、選択肢があるはずです。
配列で制御するのがよさそうですね。
選択肢 = [ 'たたかう', '道具', '逃げる']
そして、選択肢を選ぶという動作制御が必要です。選ばれた選択肢は定数として格納しておきましょう。
選択肢 = [ 'たたかう', '道具', '逃げる']
選ばれた選択肢 = 選択肢を選ぶ()
そして、選ばれた選択肢によって挙動が変わりますよね。ここではわかりやすくif文を使いましょう。
選択肢 = [ 'たたかう', '道具', '逃げる']
選ばれた選択肢 = 選択肢を選ぶ()
もし 選ばれた選択肢 が 'たたかう' だったら
{
}
戦うを選んだら攻撃するんでしたね。
選択肢 = [ 'たたかう', '道具', '逃げる']
選ばれた選択肢 = 選択肢を選ぶ()
もし 選ばれた選択肢 が 'たたかう' だったら
{
敵 を 攻撃する
}
といった具合です。
今回は全部日本語ベースで記述しましたが、あとはこれをプログラムに置き換えれば攻撃のロジックは完成します!
ね、パソコン必要なかったですよね?
言葉の定義をより精緻に & 機能拡張の可能性を作ろう!
ちなみに、↑の内容だけでは不十分です。
‘どうぐ’, ‘にげる’ の各コマンドの制御を記述するのは勿論ですが、まだまだ言葉に曖昧性があります。
例えば、
敵 を 攻撃する
という文章ですが、
対象となる敵のデータがありません。
最低限、
- 名前
- HPの最大値
- 現在のHP
- 攻撃力
- 防御力
- 回避率
- 倒すことで得られる経験値
あたりが必要になってきそうです。
これは主人公サイドにも同じことが言えます。でも、主人公には”倒すことで得られる経験値”の項目は必要なさそうです。逆に、現在の経験値や現在のレベルは必要になってきそうです。
とすると、登場キャラクターのクラスを作成し、それを継承する形で主人公、敵クラスを作成。それぞれインスタンス化した方が制御しやすそうです。
登場人物クラス{
名前
HPの最大値
現在のHP
攻撃力
防御力
回避率
}
登場人物クラス を継承した 主人公クラス {
現在の経験値
現在のレベル
}
登場人物クラス を継承した 敵クラス {
倒すことで得られる経験値
}
“倒すことで得られる経験値” については、攻撃力や防御力から機械的に算出するのであればメソッドにするか、ロジックが各一的ならばクラスに含めずとも良いかもしれません。
また、出現する敵が複数体いる場合は、[敵1, 敵2]
のようにオブジェクトを複数制御するロジックが必要になってきます。
思考実験はいつでもどこでもできる!
いかがだったでしょうか? ただ単に”攻撃をする”という一部分を切り取っただけでも、これだけのことを考えることができます。そして、ロジックを考えるだけならばパソコンを使わずとも記述をすることができます!
実際、この記事の下書きも電車に揺られながらスマホで書いています。
そして、書き出すことによって「あ、こんな想定もしなきゃいけない」ということがだんだんと洗い出されてきます。それを繰り返すことがシステムを設計するときの抜け漏れを防ぐことに繋がっていきます!
思い立ったら即実行!ぜひ皆さんも実験してみてください!!