応用プログラム 液晶ゲーム JUMPING KING LCD
この液晶ゲームはIchigoJam-FAN(Facebook)の斎藤史郎さんがゲームの作り方として紹介されたジャンプゲームを液晶用に移植したものです。
キャラクタ「−」をカーソルキーで操作し、右から左へ迫ってくる「.」を方向キーのジャンプで避けます。物理法則に反し、ジャンプ中の空中移動も可能です。ゲームオーバーとなったときの再開は「↓」キー、終了はスペースキーです。
本ゲームを公開したときに比べて、IchigoJam BASICの動作速度が格段に上がっているので、ゲームとしては、かなり難しくなってしまいました。行番号「255 wait 10」のように待ち時間処理を挿入して調整すると良いでしょう。
プログラム JUMPING KING LCD
' I2C LCD Example for IchigoJam
' CC BY (c) 2015-2018
' Wataru KUNINO @ IchigoJam-FAN
new
1 cls:?"JUMPING KING LCD
2 ?"Wataru KUNINO"
3 beep:gsb @LC_INI:wait 90:cls
4 X=2:'ヨコ
5 Y=0:'タテ
6 P=0:'テンスウ
7 D=0:'ソクド
8 let [0],95,45,95,45,255
100 @GAME
110 gsb @KY
120 if K=1 and X>0 then X=X-1
130 if K=2 and X<7 then X=X+1
140 if K/2=1 and Y=0 then D=1
150 Y=Y+D:W=W+1
160 if Y=4 then D=-1:P=P+1
170 if Y=0 then D=0
180 if W<5-P/5 goto 210
190 scroll 3:W=0
200 if rnd(8)=0 lc 15,1:? "."
210 T=vpeek(X,Y<2)
220 if T=46 goto @END
230 lc 5,0:?" ";P
240 lc X,Y<2:? chr$([Y])
250 gsb @LC
'255 wait 10
260 lc X,Y<2:? chr$(T)
270 goto @GAME
400 @END
410 lc X,1:? "X":gsb @LC
420 beep 50
430 gsb @KY:if K<4 cont
440 if K=7 cls:end
450 run
995 @KY:K=btn(LEFT)+btn(RIGHT)*2+btn(UP)*3+btn(DOWN)*4+btn(SPACE)*7:rtn
996 @LC_INI:let[96],640,64,#5639,#C6C,#C080,64:ifi2cw(62,#8C3,5)?"E
997 @LC:ifi2cw(62,#8C0,3,#900,16)+i2cw(62,#8C8,3,#920,16)?"E
998 rtn
ゲーム製作時の留意ポイントは、LCDへの転送タイミングです。テレビ画面に表示した内容を定期的にLCDへ転送しますが、書き換え途中の状態で転送を行うのは非効率です。ゲームが成り立つ画面が完成するたびに転送すると良いでしょう。
本例では、行番号240でゲーム画面を書き終えます。行番号260は次の画面用の処理なので、それより前の行番号250でLCDへの転送を実行します。
|