A,V,W | ピース描画時のスプライト座標算出用 |
B | ボタンの状態 |
C[] | ピースの色 |
H | 完成判定用 |
I,J | 汎用ループカウンタ |
M,N | ピース描画時のスプライト座標 |
P | 操作中のピース |
P$ | ピースの形状情報 |
Q | 操作中ピースの点滅処理用 |
R[] | ピースの回転状態 |
S | ピース描画時のスプライト番号 |
T,U | スライドパッド入力量、他 |
X[],Y[] | ピースの位置 |
Z | 雑用 |
ACLS:DIM C[12],X[12],Y[12],R[12]FOR I=1TO 120
SPSET I,242SPCOLOR I,1<<31SPCOL I:NEXT
P$="_EFJMNEFIJNEFJKOEFGKOBFIJNBFIJMFIJKNEFJK"
P$=P$+"NEFGJNEFJNOBFJNOBFJNR"FOR I=0TO 11
C[I]=&H13A0E0*I+&HFF27CF1FX[I]=I MOD 6*4+2
Y[I]=(I>5)*9+3NEXT:GPRIO 0GBOX 111,79,272,176
BGOFS 0,,,1024BGFILL 0,0,0,24,14,"02261226"
SPSET 0,32SPCOL 0,120,88,144,80LOCATE 5,
?"「ペントミノパズル」 いどう かいてん はんてん ピースきりかえ"
BGMPLAY 27WHILE 1H=0FOR I=0TO 11Z=R[I] MOD 4
T=ABS(Z-2)-1U=ABS(Z-1)-1FOR J=1TO 5S=I*5+J
A=ASC(MID$(P$,S,1))V=A MOD 4-2W=A DIV 4-18
V=V*SGN(3.5-R[I])M=(T*V+U*W+X[I])*16
N=(T*W-U*V+Y[I])*16SPOFS S+60,M+4,N+4,1024
Q=255-MAINCNT MOD 16*8Q=RGB(Q,Q,Q)Z=I!=P
SPCOLOR S,!Z*Q+Z*C[I]SPOFS S,M,N,Z 'by @OBONO
H=H+(SPHITSP(S,1,S)<0)*SPHITSP(S,0)NEXT:NEXT
STICK OUT T,U:X[P]=MAX(MIN(X[P]+T/6,22),2)
Y[P]=MAX(MIN(Y[P]-U/6,12),3)B=BUTTON(2)>>4
IF!T*!U THEN X[P]=X[P]+.5OR 0Y[P]=Y[P]+.5OR 0
Z=R[P]Z=(Z+B MOD 4+(B MOD 4>1))MOD 4+(4AND Z)
IF B AND 4THEN Z=(Z+4)MOD 8XOR!(Z MOD 2)*2
IF B AND 8THEN Z=(8-Z)MOD 8XOR!(Z MOD 4)*4
VSYNC:B=B*!T*!U:IF Z!=R[P]THEN BEEP 40R[P]=Z
IF B AND 48THEN BEEP 9P=(P+1+(B<32)*10)MOD 12
LOCATE 22,8?MID$(" かんせい",(H==60)*4,4)WEND