2021-07-06
感動的に短いテトロミノ落ち物パズルゲームの知恵、IchigoJamでのゲームづくりに応用してみましょう。

まずは、下記JavaScriptで作られたテトロミノを生成部をIchigoJam BASICの配列を使って再現してみます。 B=[[-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2] IchigoJam BASICで書くとこんな感じです

10 W=32:LET[4],-W+1,-W*2,2,W+1,-W-1,-1,-1 20 T=0 30 LET[0],0,1,[4+T],(2+W)*(T=6)-W 40 CLS:FORI=0TO3:POKE#A2C+[I],1:NEXT 50 WAIT30 60 T=(T+1)%7:GOTO30

全7パターンのテトロミノが表示できました!(RUN on IchigoJam web)

使いやすいようにサブルーチンとしてまとめます

100 @INIT 110 W=32:LET[4],-W+1,-W*2,2,W+1,-W-1,-1,-1:RTN 120 @SET:'T 130 LET[0],0,1,[4+T],(2+W)*(T=6)-W:RTN 140 @PUT:'X,Y 150 FORI=0TO3:POKE#900+X+Y*W+[I],T%4+1:NEXT:RTN

このサブルーチンを使った単純表示するプログラムはこちら

10 CLS:GSB@INIT 20 T=0:X=15:Y=10 30 GSB@SET:CLS:GSB@PUT:WAIT30 40 T=(T+1)%7:GOTO30

回転する機能を追加します(2つの条件処理がいまいちですが・・・)

160 @ROT 170 FORI=0TO3:A=[I]%W:A=A+2*A*(A>15):[I]=A*W-[I]/W 180 IF[I]=-992[I]=33 190 IF[I]=2976[I]=-33 200 NEXT:RTN

回転を加えた表示プログラム差分

30 GSB@SET:FORR=0TO3:CLS:GSB@PUT:WAIT30:GSB@ROT:NEXT

何か作れそうな気がしてきましたね!

ひとまずテトロミノをランダム表示するスクリーンセイバーを作ってみました。

10 CLS:GSB@INIT 20 T=0:GSB@SET 30 X=RND(28)+2:Y=RND(19)+2:GSB@PUT 40 IF RND(4) T=(T+1)%7:GSB@SET ELSE GSB@ROT 50 GOTO30


重なり判定があればパズルゲームなどにできそうですね!
腕だめしに実装してみましょう!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS