【IchigoJam】streakを繋げ!
気がついたらもう週末…急いでなんか書いて週streakを繋がなきゃ…
ということで、IchigoJam でstreakを繋ぐゲームを作ってみた。
※IchigoJamはjig.jpの登録商標です。
ルール
画面右側から「s」「t」「r」「e」「a」「k」の各文字がランダムに流れてくる。
画面左側にある自機の「s」を操作してこれらの文字を取ると、取った文字が自機の右に繋がる。
間違った文字を取らないように気をつけつつ、「streak」になるように順番に取っていこう。
5分間で「streak」を多く作れるほど偉い!
操作方法
方向キー上:自機を上に動かす
方向キー下:自機を下に動かす
スペースキー:スタート
スクリーンショット
プログラム
10 ' streak ヲ ツナゲ!
20 CLS:LOCATE5,11:?"PRESS SPACE TO START";
30 IFINKEY()<>32WAIT1:GOTO30
40 CLS:LOCATE 0,23:?"TIME 300 streak 0";:CLV:S=1:Y=10:LOCATE 5,Y:?"s";:CLT
50 Z=Y:K=INKEY():CLK:IFY>0AND(K=UPORBTN(UP))Y=Y-1
60 IFY<21AND(K=DOWNORBTN(DOWN))Y=Y+1
70 P=0:FORI=0TO42STEP3
80 IF![I]GOTO120
90 IF[I]>6[I]=[I]-1:LOCATE[I],[I+1]:?CHR$([I+2],0);:GOTO120
100 IF!FANDY=[I+1]P=1:IF[I+2]=PEEK("streak"+S)S=S+1ELSEE=[I+2]
110 LOCATE[I],[I+1]:?CHR$(0);:[I]=0
120 NEXT
130 IF!PGOTO160
140 IFS=6F=5:C=C+1:LOCATE16,23:?DEC$(C,4);:PLAY"L32O5CDEFG"
150 IFEF=30:PLAY"O3E16C"ELSEIFS<6PLAY"O5C32"
160 IFFF=F-1:IF!FS=1:E=0:P=1
170 IFAA=A-1:GOTO220
180 V=0:FORI=3TO42STEP3
190 IF![I]V=I
200 NEXT
210 [V]=31:[V+1]=RND(22):[V+2]=PEEK("streak"+RND(6)):A=1
220 T=T+6:IFT%60=0LOCATE5,23:?DEC$(300-T/60,3);
230 IF Z<>YORPLOCATE0,Z:?" ";:LOCATE5+!E-S,Y:?STR$("streak",S);:IFE?CHR$(E);
240 W=T-TICK():IFW>0ANDW<10WAITW
250 IFT<18000GOTO50
260 LOCATE11,7:?" TIME UP! ";
270 LOCATE4,14:?" PRESS SPACE TO RETRY ";
280 CLK:GOTO30
OneFiveCrowd で実行 (非公式、高速、推奨)
IchigoJam web で実行 (公式、低速)
実機で実行したところ、IchigoJam 1.4.3 では動いたものの、実行速度が足りず遅かった。(その分ゲーム時間は5分より長くなる)
IchigoJam R で実行することを推奨する。
このプログラムは、CC BY 4.0 でライセンスする。
解説
使用している変数
状態として、以下の変数を使用している。
T:経過時間 (time)
C:スコア (count)
S:状態 (status)
A:前のフレームで文字を出した (appear)
P:前のフレームで状態を更新した (push)
E:間違って繋いだ文字 (error)
Y:文字の位置 (y座標)
F:完成またはミス後の硬直時間 (freeze)
作業用に、以下の変数を使用している。
I:ループカウンタ
Z:操作による移動の前の文字の位置 (y座標)
K:フレーム間で押されたキーのキーコード (key)
V:新しく出した文字を格納する位置
W:待つべき時間 (wait)
処理内容
10行目:FILES用タイトル
20行目:初期画面の描画
30行目:開始 (スペースキーが押される) 待ち
40行目:ゲーム (画面と状態) の初期化
50~60行目:操作の受け付け・自機の移動
70~120行目:出現済の文字の移動
80行目:文字が無いスロットは処理をしないようにする
90行目:左端以外の文字は左に移動する
100行目:文字を取るかの判定・取った文字の処理
110行目:左端の文字を消す
130~160行目:文字を取った結果の処理
140行目:「streak」完成時の処理
150行目:ミスおよび「streak」作成途中の処理
160行目:ミス・完成後の文字を取らない時間の更新
170~210行目:文字を新たに出現させる処理
170行目:文字を出現させた次のフレームでは出現させないようにする
180~200行目:文字の情報を格納する空きスロットを探す
210行目:文字の情報を生成・格納する
220行目:現在時刻の更新と残り時間表示の更新
230行目:自機の位置と状態を描画に反映させる
240行目:1フレームの時間が経過していなければ、待機する
250行目:ゲーム中であれば、次のフレームに行く
260~270行目:ゲーム終了の描画
280行目:次のゲームの開始待機に移る
この記事が気に入ったらサポートをしてみませんか?
コメント