見出し画像

【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行目:次のゲームの開始待機に移る

この記事が気に入ったらサポートをしてみませんか?

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
【IchigoJam】streakを繋げ!|みけCAT
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1