IchigoJamプログラミング動画教材、「8パズルゲームを作ろう」です。プログラミング中級編です。
IchigoJam webでも作れるので、家のパソコンでやってみてください。
遊び方
プログラムを実行すると、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枚になります。
ちょっと長いプログラムなので、「中級編」として、動画では1ブロックずつ説明しました。それぞれのブロックがどんな働きをしているかをわかってもらえると嬉しいです。
パネルを動かす部分をサブルーチン(@M)にして、最初のシャッフルと共用しているのがミソです。ただランダムに数字を配置してしまうと、いくら動かしても解けないケースが出てしまうので、せっせと100回動かしてシャッフルしています。
テキスト
十勇士パソコンクラブのサイトに、プログラミングテキスト(PPTX/PDF)があります。
www.white.umic.jp