どうも、脱サラ理学療法士のぼんぼりです。
もはや、理学療法士のかけらも残っていないような生活を送っています。
いつまで脱サラ理学療法士を名乗ろうか、ちょっと考えものですね。
それはそうと、Javaの勉強がひと通り終わったので、ぼちぼち何かミニゲームを作ることに挑戦してみました。
その名も「Hit&Blow」
名前はスタイリッシュでカッコイイ響きですが、蓋を開けてみるとJava初学者にとっては苦痛ともいえるゲームでした。
今回の記事では、その奮闘ぶりを紹介していきますね。
Java勉強の総まとめとしてポピュラーなミニゲームらしい
そもそもなんでHit&Blowやねんって話ですよね。
僕も最初はそう思いました。
思いましたけど、実際にプログラムを作ろうとすればこの辺の理由はわかりましたね。
このゲームには、Javaの基本的な構文が詰まっているからです。
詰将棋でたとえると、11詰めくらいあるんじゃないでしょうか。
僕にとってはもう初段レベルくらいに思えますが、ネットで調べたらまだまだ初心者レベルの域を出ない程度のゲームのように扱われています。
かなりしんどいんですけどね。
ググって見つけたサンプルコードを試しても、思ったようにゲームが成立しません。
for文と配列文の嵐
このゲームのポイントは、いかにしてランダムの文字や配列から条件分岐をさせるかってところだと解釈しています。
1文字ずつの比較でも、桁数の多い比較でも、つまるところ、配列から値を設定さた数だけ引っ張ってきて答えと入力された解答を比べるんですね。
文字にするとなんか簡単そうに聞こえますが、かなりの数のfor文を使います。
なんか、ひし形づくりに悩んでいた頃が懐かしいですね。あの問題が可愛く思えるくらいに、このゲームはコードが入り組んでいるように思います。
勉強を続けたら、こんなコードでも簡単に思えるようになるのでしょうか。
僕にはまだ1bitたりとも簡単というイメージは浮かんでこないですが。
そもそも乱数の指定ってどうするの
これに関しては、割とお決まりの文を宣言することで解決します。
かの、ランダム関数ですね。
ランダム関数を実装させることで、0〜9までの値が入った配列をランダム化するわけです。
で、そのランダムにでてきた番号の値を答えの配列にそれぞれ代入していくんです。
これで答えの数値をランダムにすることが実現できますね。
一応形はできるが…
サンプルコードを引っ張りながら、求める形まで形はできるんですが、細かい仕様の微調整となると、これが地味に大変な作業なんですね。
全然微調整ちゃうやんみたいな。
そもそも、サンプルコードの意味が理解できないので、それをまとまりごとに理解することから始めます。
なので、かなり時間はかかりますよ。
調べて考えて「これや!」って天才的なひらめきを受けてコードを打ち込んだら、即エラー文が返ってくるというエラーの沼にハマります。
「キサーマのは天才のそれじゃなくて、凡夫の気まぐれやぞ」みたいな感じで、エディタ様が親切にオシエテクレルンデスヨネ。
エラーが出すぎて、実行ボタンを押すのに動悸がするようになったくらいです。
エラーに悩むということをほんとうに実感しましたね。
まとめ:コメントアウトして状況を整理すべし
いきなりゲームを作ろうと思ってサンプルコードを引っ張ってきても、何もわからないと思います。
少なくとも、僕はひとっつもわかりませんでした。
パソコンではなく、僕自身がフリーズしてしまう状況になります。
そんなときは、デバッグしながらコードの役割をコメントアウトで整理するんですよね。
これを手書きでしていたのですが、あまりにも効率が悪いのでこちらの方法に切り替えました。
この流れでPDCAを回すことができれば、少しは自走レベルが上がると思います。
バグがでても、諦めずに頑張りましょう!


コメント