SHIROのIchigoJam日記

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

かんたんLightsOut

以前に作ったパズルゲーム「LightsOut」
www.ichigojaman.jp
のプログラムを簡略化したバージョンです。

遊び方

  • 起動すると、5×5=25個のライトがランダムにON/OFFされて表示されます(ON=●、OFF=○)
  • 反転するカーソルをカーソルキーで上下左右に動かして、スペースキーを押すと、そのライトおよび上下左右に隣接するライトが反転(ON→OFF、OFF→ON)します。
  • 25個のライト全てをOFFにするとゲームクリアです。ライトの下では手数を表示しています。できるだけ少ない手数でクリアを狙いましょう。
  • ギブアップする時はESCキーでプログラムを止めてください。

単純なゲームですがかなり頭を使います。必ず正解があるパターンで出題されますが、私はなかなかクリアできません…

プログラム

10 CLV:VIDEO 3
20 M=5:N=M-1
30 FOR I=1 TO M*M
40 X=RND(M):Y=RND(M):GSB @W
50 NEXT
60 GSB @L:X=0:Y=0
70 @LOOP
80 LC X,Y,1
90 K=INKEY()
100 X=X-(K=28)*(X>0)+(K=29)*(X<N)
110 Y=Y-(K=30)*(Y>0)+(K=31)*(Y<N)
120 IF K=32 BEEP:T=T+1:GSB @W:GSB @L
130 WAIT 6
140 IF L>0 GOTO @LOOP
150 BEEP 10,30:CLK:END
160 @W
170 Z=X+Y*M:[Z]=![Z]
180 IF X>0 [Z-1]=![Z-1]
190 IF X<N [Z+1]=![Z+1]
200 IF Y>0 [Z-M]=![Z-M]
210 IF Y<N [Z+M]=![Z+M]
220 RTN
230 @L
240 CLS:L=0
250 FOR I=0 TO M*M-1
260 ?CHR$(232+[I]);
270 IF I%M=N ?
280 L=L+[I]
290 NEXT
300 ?:?T
310 RTN

IchigoJam webではこちら。

20行の「M=5」を変えると、ライトの個数が変わります。
現在は5行5列=25個ですが、「M=6」だと6行6列=36個、「M=7」だと7行7列=49個…と増えて、クリアするのが難しくなります。
配列変数の個数制限があるので、最大は「M=10」の10行10列です。