SHIROのIchigoJam日記

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

8パズルゲームを作ろう(動画教材)

IchigoJamプログラミング動画教材、「8パズルゲームを作ろう」です。プログラミング中級編です。
IchigoJam webでも作れるので、家のパソコンでやってみてください。


8パズルゲームを作ろう

遊び方

プログラムを実行すると、3×3の数字パネルが表示されます。1~8と空白の順番に並べ替えてください。
矢印キー(カーソルキー)を使って、空白を上下左右に動かす感じで操作します。
最初にIchigoJamが100回シャッフルしていて、1回操作するごとに回数がダウンカウントします。100回以内にパネルを揃えられればあなたの勝ちです。(終了判定はありません)

プログラム

10 CLV:VIDEO 3
20 L=3:J=L-1:M=L*L:N=M-1
30 FOR I=0 TO N
40 [I]=(I+1)%M
50 NEXT
60 GSB @P
70 X=N
80 FOR I=1 TO 100
90 K=RND(4):GSB @M:S=S+1
100 NEXT
110 GSB @P
120 @LOOP
130 K=INKEY()-28
140 IF K<0 OR K>3 GOTO @LOOP
150 S=S-1:GSB @M:GSB @P
160 GOTO @LOOP
170 @M
180 Z=X-(K=0)*(X%L>0)+(K=1)*(X%L<J)
190 Z=Z-(K=2)*(X/L>0)*L+(K=3)*(X/L<J)*L
200 Y=[X]:[X]=[Z]:[Z]=Y:X=Z
210 RTN
220 @P
230 CLS
240 FOR I=0 TO N
250 Z=[I]
260 IF Z ?HEX$(Z); ELSE ?" ";
270 IF I%L=J ?
280 NEXT
290 ?:?S
300 RTN

20行目の

20 L=3:J=L-1:M=L*L:N=M-1

を、

20 L=4:J=L-1:M=L*L:N=M-1

に変えると、おなじみの15パズルになります。数字パネルが1~9、A~Fの15枚になります。
f:id:shiro0922:20200407154737p:plain

ちょっと長いプログラムなので、「中級編」として、動画では1ブロックずつ説明しました。それぞれのブロックがどんな働きをしているかをわかってもらえると嬉しいです。
パネルを動かす部分をサブルーチン(@M)にして、最初のシャッフルと共用しているのがミソです。ただランダムに数字を配置してしまうと、いくら動かしても解けないケースが出てしまうので、せっせと100回動かしてシャッフルしています。

テキスト

十勇士パソコンクラブのサイトに、プログラミングテキスト(PPTX/PDF)があります。
www.white.umic.jp