モノづくりエンジニアのための情報ポータルサイト|エンジニアピット

CAREER LABBASICが動く「IchigoJam」ボードでゲーム作りに挑戦!(プログラミング編)

BASICが動く「IchigoJam」ボードでゲーム作りに挑戦!(プログラミング編)
DATE2015/06/09
前回は、「IchigoJam」の組み立てを完成させるところまでやってみました。

今回は、いよいよ起動させて実際にプログラミングにトライして、最終的に簡単なミニゲームを制作するまでをご紹介しようと思います!

準備するもの!

「IchigoJam」を起動させるのに必要な「基本セット」は、以下のとおりです!
「IchigoJam」を起動させるのに必要な「基本セット」
  • IchigoJam本体
  • コンポジット端子が付いたモニター(TVでも代用可)
  • 5V出力の電源
  • コンポジットの中継端子
  • PS/2端子のキーボード
忘れやすいのが「コンポジットの中継端子」で、モニターとIchigoJamを接続するのに必要となります。
また、電源は5V出力なので、最近のスマホ充電器でも同じ出力のモノがあるので、確認してみると良いでしょう。

「IchigoJam」を起動してみよう!

それでは、「IchigoJam」へ周辺機器を接続してみましょう!

必要なのは、キーボードの「PS/2端子」、電源の「microUSB端子」、モニターの「コンポジットビデオ端子」の3つになります。
「IchigoJam」へ周辺機器を接続してみましょう!
接続できたら、電源スイッチを左方向へスライドさせます!
電源スイッチを左方向へスライドさせます!
モニターに、「IchigoJam」のバージョン情報が表示されたら成功です!
「IchigoJam」のバージョン情報が表示されたら成功です!
これで、すぐにでもBASIC言語を使って、プログラミングを開始することが可能になるのです。

まずは、「Hello, World」から!

それでは、早速ですが基本的なプログラミングを実行してみましょう!

まずは、お約束の「Hello world」を表示してみます。
以下のコマンドを実行してみてください!

PRINT “HELLO WORLD”


すると、このように表示されます。

HELLO WORLD
OK


「OK」は、正常にプログラムが終了したことを意味します。

さらに、このまま「IchigoJam」に搭載しているLEDを点灯させてみましょう!
方法はとても簡単で、以下のコマンドを実行するだけです。

LED 1


これで、「IchigoJam」のLEDが点灯します。
消灯させるには、「0」を指定すればOK!

LED 0


これで「消灯」しました。

このように、とても扱いやすいBASIC言語でプログラミングをすぐに出来るのが、「IchigoJam」の魅力と言えます。

ゲームをプログラミングしてみよう!

それでは最後に、「ブロック崩し風ミニゲーム」を作ってみましょう!
(IchigoJamのバージョンは、0.9.3になります)

「自機」をキーボードの「左右キー」で操作しながら、ボールを跳ね返してブロックに当てるゲームです。
「「ブロック崩し風ミニゲーム」を作ってみましょう!
ブロックは1つだけですが、ボールに当たるとランダムな場所に再度出現するようになっています。

IchigoJamの画面座標は、水平方向に「0〜35」垂直方向に「0〜26」までの座標を指定することが出来ます。(ver 0.9.8まで)

これを踏まえて、自機の水平座標を保持する変数「Z」、ボールの座標「X、Y」、ボールの移動量「H、V」、ブロックの座標「A、B」、ブロック再描画フラグ「S」をまずは定義します。

10 Z=16:X=17:Y=22:H=1:V=-1:A=20:B=10:S=1


そして、壁の左端(X=0)と右端(X=35)、壁の天井(Y=0)、自機(Z±3)、ボールが下まで落ちたかどうか(Y>25)の判定処理を行います。

20 IF (X<=0)+(X>=35) H=H*-1
30 IF Y<=0 V=V*-1
40 IF (Y=24)*(X>Z-3)*(X<Z+3) V=V*-1
50 IF Y>25 GOTO 170


ブロックの当たり判定に関しては、ボールの座標とブロックの座標が同じ位置にあるかどうかで判定します。

60 IF (Y=B)*(X>A-3)*(X<A+3) V=V*-1:S=0


上記の当たり判定処理の度に、HとVを「+」「-」方向に増減することで、跳ね返りを表現し、以下のコードだけでシンプルに実行することが可能です。

70 X=X+H:Y=Y+V


ブロックはボールと接触する度に、変数「S」を「0」にして、以下のような乱数を使ってランダムな場所に表示するようにしています。

80 IF S=0 A=RND(31)+2:B=RND(18):S=1


「S」は、再び「1」に戻すことで、接触時のみブロックを再描画するようになります。

キーボードからの入力に関しては、「28」が左キーで「29」が右キーという意味になります。

90 K=INKEY()
100 IF (K=28)*(Z>3) Z=Z-2
110 IF (K=29)*(Z<31) Z=Z+2


「自機・ボール・ブロック」の表示には、LOCATE関数を利用するのが良いでしょう。

130 LOCATE Z-2,25:PRINT “=====”
140 LOCATE X,Y:PRINT “O”
150 LOCATE A-2,B:PRINT “[@@@]”


そして、すべてのコードをまとめると、以下のようになります。

10 Z=16:X=17:Y=22:H=1:V=-1:A=20:B=10:S=1
20 IF (X<=0)+(X>=35) H=H*-1
30 IF Y<=0 V=V*-1
40 IF (Y=24)*(X>Z-3)*(X<Z+3) V=V*-1
50 IF Y>25 GOTO 170
60 IF (Y=B)*(X>A-3)*(X<A+3) V=V*-1:S=0
70 X=X+H:Y=Y+V
80 IF S=0 A=RND(31)+2:B=RND(18):S=1
90 K=INKEY()
100 IF (K=28)*(Z>3) Z=Z-2
110 IF (K=29)*(Z<31) Z=Z+2
120 CLS
130 LOCATE Z-2,25:PRINT “=====”
140 LOCATE X,Y:PRINT “O”
150 LOCATE A-2,B:PRINT “[@@@]”
160 GOTO 20
170 CLS:PRINT “GAME OVER”


あとは、「RUN」コマンドを実行することで、ゲームがスタートします。

ボールが下まで落ちてしまうと、「GAME OVER」と表示されてプログラムがストップするので、再度スタートする場合はもう一度「RUN」を実行しましょう。

まとめ

2回に渡り、IchigoJamの組み立てからゲーム作りまでご紹介してきましたが、如何だったでしょうか?

今回ご紹介したゲームの応用例としては、スコア表示機能を追加したり、ブロックの数を増やしたり、入出力ポートに「圧電サウンダー」を接続して効果音を付けるのも楽しいかと思います。

プログラミングの入門として最適なBASIC言語と、1500円から入手可能なIchigoJamを使えば、親子で楽しみながらコンピュータの世界を堪能できるでしょう。

エンジニアピット キャリアラボ一覧へ戻る