1. ホーム
  2. トピックス
  3. トピックス
  4. プログラミング(2)

プログラミング(2)

 前回、このトピックスのコーナーで、40年前の趣味がプログラミングだったことや、生成AIを使って業務用のプログラムを作成したことを書きました。

 業務用のプログラムを作成している最中は、本業よりもついそちらに夢中になってしまい、それが一段落した後も、プライベートで何か作ってみたい気分になりました。
 そこで、自宅で放置気味だったSwitchを活用して、ゲーム制作に挑戦することにしました。

 ゲーム制作のために購入したのは、「プチコン」です(セールで1500円)。プチコンは、ゲーム機上でBASICを動かすことのできるプログラミングツールで、15年ほどの歴史があります。子供たちがまだ小学生の頃、プログラミングに興味を持ってもらおうと、3DS版を購入したこともありますが、あまり興味をもってもらえず、ストレージの肥やしになってしまったことがあります。
 3DS版のプチコンでは、タッチペンで仮想キーボードを操作してプログラムを入力する必要がありましたが、Switch版では、本体にUSBキーボードとマウスを接続して使用できるので、パソコンと同じ感覚でプログラミングができます。動く言語はBASICなので、私のような80年代の8bitパソコンを経験した世代には、まさにうってつけの環境です。

 最初に作るゲームとして、どんなゲームをつくろうかと悩みましたが、プチコンでは3Dゲームを作ることは難しいので、2Dゲームの王道であるスーパーマリオのようなジャンプアクションに挑戦することにしました。

 まずは、キャラクターをジャンプさせるのに必要な計算式を、高校生の次男に教えてもらい(鉛直投げ上げの式)、その式を使ってキャラクターをジャンプさせるところから作り始めました。キャラクターのデザインや作曲の才能はないので、登場キャラクターやBGM、SEなどは、プリセットされたものから適当なものを選ぶことにしました。

 左右の移動やジャンプ自体はそれほど難しくなくスムーズに実装できましたが、最初の関門は、ジャンプ中の足場への着地処理です。これを実現するには、ステージに設置した足場と、自キャラの当たり判定が必要です。ただ、テキストスクリーンという画面に描画するステージの座標系と、自キャラの座標系が異なるので、座標変換が欠かせません。計算がうまくいかないと、永遠に自キャラが落下し続けることになります。さらに、ステージを横スクロールさせる必要があるので、その計算も加味しなければなりません。
 このほかにも、キャラと壁との当たり判定、敵の移動処理、ステージクリア条件の設定など、組み込むべき処理は盛りだくさんです。マリオのように、ブロックをジャンプで壊せるようにもしたかったので、そのあたりの処理も苦労して実装しました。生成AIも使いましたが、マイナーな言語のため、そのまま動くようなソースを書いてくれることはありませんでした(アルゴリズムの相談にはずいぶん乗ってもらいました)。
 プチコンのBASICはとても高速で、40年前のパソコンでは到底実現できないスピードで動きます。そのため、どんなに複雑な処理を組んでも、1秒間に60フレームくらい余裕で処理してしまいます。

 そうこうして完成したのが、下記の画像のようなゲームです。
 メインのプログラムは1ヶ月ほどで完成しましたが、ステージを考えるのが面倒で、しばらく放置していました。しかし、プチコンには自作ゲームを公開できる機能があるので、どうせなら公開したいと思い、冬休みに突貫工事でタイトル画面やステージのデータを用意しました。そうしてとうとう、自分で作ったゲームを初めて世の中に公開することができました(無料)。

 公開したゲームは、今のところ100回ほどダウンロードされ、「いいね」が8つほど付いています。プチコンで初めて完成させたゲームにしては我ながら上出来だと思っています。今後、ステージを増やしたり、背景の多重スクロールにも挑戦したいところですが、最近めっきり寒くなり、なかなかやる気がでません。もう少ししたらバグ取りをしつつアップデートしたいと思っています。アイデアが湧いたら、2作目にも調整したいですね。[Yu.I]

一覧へ戻る