【ー】ORANGE pico 用「接続ゲーム」
#クリエイターフェス 7日目、テーマは「ー」である。
接続ゲーム
ORANGE pico で「接続ゲーム」を作ってみた。
成功すると、「ー」のような横一直線が現れる。
ルール
ゲームを開始すると、左上と右下に線が現れる。
左上の線に力を加えて動かし、右下の線にうまく接続することが目的。
右側に着いたとき、線がずれていると失敗。
位置がピッタリ合っても、そのときの速度が速すぎると線が折れてしまって失敗。
十分ゆっくりな速度で、位置をピッタリ合わせて右下の線に接続できれば成功。
左上にかかった秒数が出るので、なるべく早くうまく接続を成功させることを目指そう。
操作方法
キーボードで操作する。UART経由では操作できない。
HetaPad でも操作できるはずである。
上下左右の矢印キー:その方向に力を加える
スペースキー:リスタート
プログラム
10 black=rgb(0,0,0):white=rgb(255,255,255)
20 cls:line 310,150,320,150,white:px=0:py=50:x! = 10:y! = 50:dx! = 0:dy! = 0:ended=0:cltms:nextframe=0
30 lx = floor(x! + 0.5):ly = floor(y! + 0.5)
40 if lx<=0 then lx=0:gosub 230
50 if ly<=0 then ly=0:gosub 230
60 if ly>=199 then ly=199:gosub 230
70 if lx>=309 then lx=309:gosub 250
80 if py<>ly then line 0,py,px,py,black:line 0,ly,lx,ly,white:goto 100
90 if px<=lx then line px,ly,lx,ly,white else line lx+1,ly,px,ly,black
100 px=lx:py=ly
110 key = kbstatus()
120 if ended then goto 190
130 t=tickms():gprint 0,0,format$("%d.%0d",t/1000,t/100%10),white
140 x! = x! + dx!:y! = y! + dy!
150 if key & 1 then dx! = dx! - 0.02
160 if key & 2 then dx! = dx! + 0.02
170 if key & 4 then dy! = dy! - 0.02
180 if key & 8 then dy! = dy! + 0.02
190 if key & 16 then goto 20
200 nextframe = nextframe + 17
210 if tickms() < nextframe then goto 210
220 if ended goto 110 else goto 30
230 if ended==0 then gprint 132,96,"FAILED!",white:ended=1
240 return
250 if ended<>0 then return
260 if ly<>150 then goto 230
270 if dx!<=0.5 && -0.5<=dy! && dy!<=0.5 then gprint 136,96,"CLEAR!",white:ended=1:return
280 line 300,ly,309,ly,black
290 line 300,ly,305,ly-5,white
300 line 305,ly-5,309,ly+5,white
310 goto 230
改造のヒント
たとえば、以下の変更を行うことが考えられる。
これらは読者への宿題とする。
実行してすぐにゲームを始めるのではなく、タイトル画面を追加する
ゲームコントローラーで操作できるようにする
加速度センサーを接続し、傾けた方向に力を加えられるようにする
効果音を追加する
クリア時や失敗時の演出を追加する
ハイスコアやランキングが出るようにする
スタート地点やゴール地点の位置をランダムにする
ゴールに近づくとゴールの方向に引っ張るアシストを加える
右から左に接続するモードを追加する
ゴールが動くモードを追加する
ライセンス
今回のプログラムと解説 (「接続ゲーム」節の内容) は、CC BY 4.0 でライセンスする。