まずは、下記JavaScriptで作られたテトロミノを生成部を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
重なり判定があればパズルゲームなどにできそうですね!
腕だめしに実装してみましょう!