SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

15Puzzle64J

Ichigo64(IchigoJam+IchigoDot)環境用の15パズル、ジョイスティック版です。
以前作った「15Puzzle64」をジョイスティック操作に対応させました。

  • 実行するとタイトル画面の後、正解のイチゴイラストが表示されます。裏でパズルのシャッフルをしていますので、その間に正解のパターンを覚えてください。シャッフルが終了するとビープ音が鳴ります。
  • ボタンを押すと、パズル開始です。空白ピースをジョイスティックで上下左右へ動かして入れ替えてください。
  • 15枚のパズルが揃うと、イチゴイラストが完成します。ボタンを押すと、終了までにかかったステップ数がドットで表示されます(64ステップまで)。もう一度ボタンを押すとリプレイします。
  • 画面表示はPUSH方向が「上」になります。
  • ジョイスティックのアナログ値による調整(3行目のH,L)
    • 横方向(IN5):「左」=0近辺・「右」=1023近辺の時は「H=1」、逆の時は「H=-1」。
    • 縦方向(IN6):「上」=0近辺・「下」=1023近辺の時は「L=1」、逆の時は「L=-1」。

10/19 Ver1.1

  • パズルのシャッフル状態があまり良くないので修正。
  • ステップ数表示のバグ修正。

1 '*15Puzzle64J
2 WAIT60:UART1:CLS:?:OUT1,-1:OUT2,-1
3 CLV:H=-1:L=1:?"MATLED SHOW 4E484E424E2B4582":PLAY"R8L8CGECG":WAIT99:GSB24:W=60:SRNDANA(2)+TICK()
4 LET[0],4,12,13,8,5,6,7,11,14,6,6,10,14,14,3,0:FORN=0TO15:[N+16]=[N]:NEXT:P=15:GSB24
5 FORN=0TO127
6 I=RND(2)*2-1:J=RND(2)*2-1:GSB20:IF!MGOTO6
7 NEXT:BEEP
8 IF!BTN()GOTO8
9 GSB24:BEEP
10 I=(ANA(5)-511)/300*H:J=(ANA(6)-511)/300*L:IF!(I|J)GOTO10
11 GSB20:IF!MGOTO10
12 BEEP:S=S+1:GSB24
13 G=0:FORN=0TO15:IF[N]<>[N+16]G=1
14 NEXT:IFGGOTO10
15 BEEP8,5:WAIT8:BEEP8,5
16 IF!BTN()GOTO16
17 IFS>64S=64
18 U=0:V=0:FORB=1TOS:GSB27:NEXT
19 IF!BTN()GOTO19 ELSEGOTO3
20 GSB22:IFM=0RTN
21 [P]=[Q]:[Q]=0:P=Q:RTN
22 M=1:Q=P-(I=-1)*(P%4>0)+(I=1)*(P%4<3)-4*(J=-1)*(P/4>0)+4*(J=1)*(P/4<3):IFQ=PM=0
23 RTN
24 ?"MATLED SHOW ";:FORY=0TO6STEP2:D=0:E=0:FORX=0TO3:C=[Y*2+X]:B=(3-X)*2:D=D+((C&3)<