2021年の6月頃に初公開した「完全初心者のためのプログラミング入門」に、以下の二つのページを加えました。これにて完結となります。
ここまでは「UFOゲーム」を作ってきましたが、最終回である今回は、こんな感じのシューティングゲームを作ります。
下にあるキャノン砲で、敵を撃墜するゲームです。敵は、UFO、エイリアン、フライングボード(くるくる回りながら落ちてくる板です。何かに似ていますが気にしないように)、それからエイリアンが落とす爆弾の4種類です。実際のゲームは、こちらで遊べます。
ここまで作ってきたUFOゲームに比べると、相当複雑なプログラムに思えるのではないでしょうか。実際それなりにプログラムは長くなっていますが、メソッドオーバーライドとかポリモルフィズムとかのオブジェクト指向の機能により、それほどごちゃごちゃにならずにプログラムが組める、ということを示せたと思います。今後、敵の種類をもっと増やすのも簡単にできるようにしています。
一昔前は、「オブジェクト指向」について、難しいとかわからないとかそんなものは役に立たないとか、そんな意見が山ほど出ていましたが*1、実際にこのような「オブジェクト指向が明確に役に立つ例」を見てみれば、そういう疑問も解消するのではないかと思います*2。
『JavaScriptの「オブジェクト指向」はやわかり』の方は、class構文を使わない、昔ながらのJavaScriptでオブジェクト指向を実現する方法について説明しています。いまどきそんなのなんの役に立つのか、と思うかもしれませんが、JavaScriptのclass構文が単なるシンタックスシュガーにすぎない以上、知らないで済ませることはやはりできないでしょう。
これを始めたときに書いたはてなブログがこれです。
この記事の最後で、『最終的には、これくらいのシューティングゲームくらいまで持っていきたいと思っていますが、さて、どうなりますことやら。』と書いていますね。どうやらそこまで持っていくことはできました。いやあ長かった。
入門記事本体の「なぜこんなのを書いたのか」にも書きましたが、この「入門」は、1982年の「マイコンBASICマガジン」(略してベーマガ)の記事「UFOゲームを作ってみよう」へのオマージュです。しかし、当時の私には、UFOゲームは作れても、このシューティングゲームくらい複雑なプログラムは書けなかったと思います。今書けるのは、もちろんプロとして30年くらいやってるので当たり前ではあるのですが、ハードウェアの進歩(1982年当時なら、このゲームは機械語が必要だったでしょう)のほか、プログラミング言語や技法の進歩もあると思っています。今の若い人はここから始められて幸運だ、ぐらいのことは言っていいかもしれません。
多くの人が、プログラミングの楽しみに触れられますように。