見出し画像

【IchigoJam】streakゲーム ~streakを繋げ!2~

またもや「streakを繋ぐ」シリーズ。
IchigoJam で、よくある「スネークゲーム」ならぬ「streakゲーム」を作ってみた。

※IchigoJamはjig.jpの登録商標です。

ルール

「streak」が自動で進んでいく。
画面内のランダムな位置に現れる文字を先頭に繋ぎ、どんどん長くしていこう!
得点表示・画面端・自分に当たってしまうとゲームオーバー!

操作方法

  • 十字キー・WASDキー:方向を変える

  • スペースキー:ゲームオーバー時にリトライする

プログラム

10 ' streak ゲーム
20 IFVER()>=13224A=POS(3):B=POS(4)ELSE A=32:B=24
30 LET[0],#73,#74,#72,#65,#61,#6B
40 FORI=0TO3:FORJ=0TO5:FORK=0TO7:POKE#700+(I*8+J)*8+K,PEEK([J]*8+K):NEXT:NEXT:NEXT
50 CLS:?"  6":X=(A-1)/2:Y=(B-1)/2:D=0:S=6:LOCATEX,Y:?CHR$(#E0,#E1,#E2,#E3,#E4,#E5):CLT
60 U=RND(A):V=RND(B):IFSCR(U,V)GOTO60ELSEPOKE#900+V*A+U,#E5-S%6
70 T=5-TICK():IFT>0:WAITT
80 CLT:K=INKEY():L=K&#DF:IFL=#44ORK=RIGHTD=2
90 IFL=#53ORK=DOWND=3
100 IFL=#41ORK=LEFTD=0
110 IFL=#57ORK=UPD=1
120 Z=X+(D=2)-(D=0):W=Y+(D=3)-(D=1):IFZ=UANDW=VGOTO190
130 IFZ<0ORA<=ZORW<0ORB<=WORSCR(Z,W)PLAY"L16O3EDC4":GOTO180
140 POKE#900+W*A+Z,PEEK(#900+Y*A+X)&#E7+D*8:X=Z:Y=W
150 FORI=1TOS:E=PEEK(#900+W*A+Z)/8&3:Q=Z+(E=0)-(E=2):R=W+(E=1)-(E=3)
160 POKE#900+W*A+Z,PEEK(#900+R*A+Q)&#E7+E*8:Z=Q:W=R:NEXT
170 POKE#900+W*A+Z,0:GOTO70
180 IFINKEY()=#20GOTO50ELSEWAIT1:GOTO180
190 POKE#900+V*A+U,#E5-S%6+D*8:S=S+1:LOCATE0,0:?DEC$(S,3);:X=Z:Y=W
200 IFS%6PLAY"O4C32"ELSEPLAY"L32O5CDEF16"
210 GOTO60

このプログラムは、CC BY 4.0 でライセンスする。

OneFiveCrowd で実行する (非公式、高速、推奨)
IchigoJam web で実行する (公式、低速)

IchigoJam の実機 (1.4.3) では、少し長くなると動作が遅くなる様子がみられた。
実機で動かす場合は、IchigoJam R の使用を推奨する。

実行結果例

画像
ゲーム中の画面

途中「s」が2個連続している場所があるが、これは体を動かす処理の途中であるからだと考えられる。

解説

  • 10行目:FILES 対応のタイトル

  • 20行目:画面サイズを取得する

  • 30~40行目:キャラクターパターンを設定する
    「streak」を進める方向をVRAM上に記録するため、「s」「t」「r」「e」「a」「k」のフォントをキャラクターパターンRAMにコピーし、4方向に対応する4種類の文字コードで同じ文字が出るようにする

  • 50行目:ゲームを初期化する

    • 画面をクリアし、最初の得点 (長さ) を表示する

    • 「streak」の初期位置・方向・長さを設定し、「streak」を表示する

    • ウェイト用にタイマーをクリアする

  • 60行目:取る用の文字を出す

    • 文字を出す位置をランダムに決める

    • 決めた位置に既に何かある場合は、決め直す

    • 決めた位置に文字を出す

  • 70行目:1フレームの時間がまだ経っていなければ、ウェイトを入れる

  • 80行目~110行目:入力に応じて進む方向を変える

  • 120行目:次に進む位置を求め、文字を取る判定を行う

  • 130行目:ゲームオーバーの判定を行う

    • ゲームオーバーの場合は、効果音を鳴らす

  • 140~170行目:「streak」の位置を動かす

    • まず、新しい頭の位置に古い頭の文字を置き、頭の位置を更新する

    • VRAMに記録した方向の情報を用いて、体を順に進める

    • 最後に、一番最後の文字を消去する

  • 180行目:ゲームオーバー時の処理を行う

    • ゲームの進行を止め、リトライの入力を待機する

  • 190~210行目:文字を取ったときの処理を行う

    • 取った文字に、次の体の方向の情報を設定する

    • 長さの表示を更新する

    • 頭の位置を更新する

    • 効果音を鳴らす (「streak」が揃ったときは、ちょっと豪華な効果音を鳴らす)

    • 次の文字を出現させる処理に移る


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

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
【IchigoJam】streakゲーム ~streakを繋げ!2~|みけ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