迷路


IchigoJam が迷路を自動生成します。毎回変わります。

その後左上にキャラクターが出てくるので、

方向キー で右下まで移動して下さい。

 

出口までの道は1経路とは限りません。

お子さんに遊んでもらうには、むしろ良いでしょうか。

簡単な経路になってしまう場合もあります。

 

下記で公開されているプログラムを参考に

IchigoJam へ移植しています。

とはいっても元はグラフィック画面という事もあり、

全然違うプログラムになっていますが……

 

『ゲームは自分で作るんだ!』MSX検定第2弾BASICプログラム編:MSX30周年 | 週間アスPLUS

 

LPC1114 を用いた IchigoJam BASIC 0.9.4 以降では、
下を追加すると、迷路の線画は見れませんが、
数秒で迷路が表示されます。
(ビデオ画面表示も LPC1114 で処理しているため)

IchigoJam BASIC RPi・IchigoJam web などでは
効果がありません。

 


15 VIDEO 0
195 VIDEO 1

IchigoJam BASIC 0.9.9〜

実際には IchigoJam BASIC 0.9.8 RC でも動作しますが、IchigoJam BASIC 0.9.8 RC では画面サイズが異なり、左上に寄ります。

10 'メイロ
20 CLS:LET Y,0:LET X,0
30 LC 0,Y:? CHR$(1);
40 LC 30,Y:? CHR$(1);
50 LET Y,Y+1:IF Y<>23 GOTO 30
60 LC X,0:? CHR$(1);
70 LC X,22:? CHR$(1);
80 LET X,X+1:IF X<>30 GOTO 60
90 LET X,2
100 LET Y,2
110 LC X,Y:? CHR$(1);
120 LET K,RND(4)
130 IF K==1 LC X-1,Y:GOTO 170
140 IF K==2 LC X,Y+1:GOTO 170
150 IF K==3 LC X+1,Y:GOTO 170
160 LC X,Y-1
170 ? CHR$(1);
180 LET Y,Y+2:IF Y<=20 GOTO 110
190 LET X,X+2:IF X<=28 GOTO 100
200 LET X,1:LET Y,1
210 LET A,1:LET B,1
220 LC 29,21:? CHR$(2);
230 LC X,Y:? CHR$(249);
240 IF (X==29)*(Y==21) END
250 LET I,INKEY()
260 IF I==28 LET X,X-1
270 IF I==29 LET X,X+1
280 IF I==30 LET Y,Y-1
290 IF I==31 LET Y,Y+1
300 IF (A==X)*(B==Y) GOTO 250
310 IF SCR(X,Y)<>1 GOTO 330
320 LET X,A:LET Y,B:GOTO 250
330 LC A,B:? " ";
340 LET A,X:LET B,Y:GOTO 230

IchigoJam web でプログラムを実行します。

このQRコードはアクセス解析のためにCookieを使用しています。

アクセス解析は匿名で収集されており、個人を特定するものではありません。

この機能はCookieを無効にすることで収集を拒否することができますので、
お使いのデバイスのブラウザの設定をご確認ください。

MixJuice ダウンロード ?"MJ GET 15J.IN/582

MicJack ダウンロード ?"MJ GKP 582



IchigoJam BASIC 0.8.6〜0.9.8

10 CLS:LET Y,0:LET X,0
20 LOCATE 0,Y:? CHR$(1);
30 LOCATE 34,Y:? CHR$(1);
40 LET Y,Y+1:IF Y<>27 GOTO 20
50 LOCATE X,0:? CHR$(1);
60 LOCATE X,26:? CHR$(1);
70 LET X,X+1:IF X<>35 GOTO 50
80 LET X,2
90 LET Y,2
100 LOCATE X,Y:? CHR$(1);
110 LET K,RND(4)
120 IF K==1 LOCATE X-1,Y:GOTO 160
130 IF K==2 LOCATE X,Y+1:GOTO 160
140 IF K==3 LOCATE X+1,Y:GOTO 160
150 LOCATE X,Y-1
160 ? CHR$(1);
170 LET Y,Y+2:IF Y<=24 GOTO 100
180 LET X,X+2:IF X<=32 GOTO 90
190 LET X,1:LET Y,1:LET A,1:LET B,1
200 LOCATE 33,25:? CHR$(2);
210 LOCATE X,Y:? CHR$(5);
220 IF (X==33)*(Y==25) END
230 LET I,INKEY()
240 IF I==28 LET X,X-1
250 IF I==29 LET X,X+1
260 IF I==30 LET Y,Y-1
270 IF I==31 LET Y,Y+1
280 IF (A==X)*(B==Y) GOTO 230
290 IF VPEEK(X,Y)<>1 GOTO 310
300 LET X,A:LET Y,B:GOTO 230
310 LOCATE A,B:? " ";
320 LET A,X:LET B,Y:GOTO 210

解説

迷路の生成方法はしっかりしたアルゴリズムを採用しても良いでしょう。

240~270 を次にすると移動にテンキーを使う事ができます。

240 IF I==ASC("4") LET X,X-1
250 IF I==ASC("6") LET X,X+1
260 IF I==ASC("8") LET Y,Y-1
270 IF I==ASC("2") LET Y,Y+1

わざわざ IF や LET を使っているのは、古いバージョンではこの方が高速に処理できていたためです。 

いろいろ改造してみて下さい。


他の方が作った迷路

他にも IchigoJam で同じような迷路プログラムを作成されている方がいらっしゃいます。

IchigoCake BASIC 向けに BASIC+PanCake 2 画面の迷路も公開されています。New 迷路 2 で紹介しています。


他のバージョン