5 '15 Puzzle 10 CLS:CLV 20 POKE#700,#86,#83,#83,#84,31,28,28,28,28,#85,#80,#80,#85,31,28,28,28,28,#85,#80,#80,#85,31,28,28,28,28,#82,#83,#83,#80,0 30 FOR I=0 TO 3:POKE#730+I*9,#80,#80,#80,#80,31,28,28,28,28:NEXT:POKE#750,0 40 S=15:FOR I=0 TO 14:[I]=I+1:NEXT 50 FOR I=0 TO 150 60 R=RND(4):IF RND(2) P=S&3+R<<2 ELSE P=S&12+R 70 IF P=S GOTO60 ELSE GSB120:NEXT 80 P=0:C=#2A:GSB170 90 K=INKEY():IF K<28||K>32 GOTO90 100 IF K=32 GSB120:GSB170:GSB200:GOTO90 110 C=0:GSB190:P=P-(K=28)+(K=29)-(K=30)*4+(K=31)*4+(P&3=0&&K=28)*4-(P&3=3&&K=29)*4+(P<4&&K=30)*16-(P>11&&K=31)*16:C=#2A:GSB190:GOTO90 120 IF P=S RTN ELSE U=(P>S)*2-1:V=ABS(P-S) 130 IF (P>>2)=(S>>2) FOR J=1 TOV:P=S+U:GSB160:NEXT:P=S:RTN 140 IF (P&3)=(S&3) FOR J=1 TOV>>2:P=S+U<<2:GSB160:NEXT:P=S 150 RTN 160 T=S:S=P:P=T:[P]=[S]:[S]=0:RTN 170 FOR I=0 TO3:FOR J=0 TO3:L=[I*4+J]:LC J*4,I*4:?STR$(#700+#30*(L=0));:IF L LC J*4-(L>9)+2,I*4+1:?L; 180 NEXT:NEXT 190 LC(P&3)*4+2,(P>>2)*4+2:?CHR$(C);:RTN 200 Z=0:FOR I=0 TO15:Z=Z+([I]=I+1):NEXT:IF Z=15 LC 5,18:?"CLEAR!":END ELSE RTN
最初のパズル生成のところで画面がしばらく映らなくなるのが注意点でしょうか(私はうっかり、IchigoJamを再起動してしまいました)。クリア不可能にならないようにするという工夫も見事です! これは延々と時間を取られてしまいそうですね。