福野泰介の一日一創 - create every day

426byteの迷路ゲーム、ローカル対戦&IchigoSodaでネット対戦への改造法

2018/08/15
#IchigoJam #game 

人気ゲームのひとつ、迷路。
意外と単純なアルゴリズム(考え方)で作れるので、ベースを作っていろいろ改造してみましょう。
元ネタ「『ゲームは自分で作るんだ!』MSX検定第2弾BASICプログラム編:MSX30周年 - 週刊アスキー

ゴールまでの道筋が見えてしまわないように、歩いたところだけが見えるようにします。
真っ白のキャラクターは、キャラクターコード1の他に、143があるので歩いていない道として使います。

10 CLS:W=29:H=21:L=143 20 FORI=0TOW+1:LCI,0:?CHR$(1,28,31,L);:LCI,H+1:?CHR$(1);:NEXT:FORI=1TOH:LC0,I:?CHR$(1,L);:LCW+1,I:?CHR$(1);:NEXT 30 FORI=2TOWSTEP2:FORJ=2TOHSTEP2:LCI,J:?CHR$(1,L,28,28,31,L,L);:D=RND(4):LCI+(D=0)-(D=2),J+(D=1)-(D=3):?CHR$(1);:NEXT:NEXT

10行 準備
20行 枠描画
30行 迷路描画(棒倒し法)
W,H: 迷路の大きさ(右端ゴールの位置)
L: 歩いていない道のキャラクターコード(L=2とすると動作がよくわかります)


カーソルキーで歩いて、ゴールまでたどり着くまでくりかえし!

40 X=1:Y=1:LCW,H:?CHR$(246) 50 LCX,Y:?"o";:IFX=W&&Y=HEND 70 K=INKEY():IF!KCONTELSEA=X-(K=28)+(K=29):B=Y-(K=30)+(K=31):IFSCR(A,B)!=1?CHR$(28,0);:X=A:Y=B 80 GOTO50

以上で迷路ゲームのできあがり、合計426byte!意外とシンプルにできたので、いろいろ拡張できますね!


10行、W=11:H=11 とすると迷路生成が速くなっていろいろ改造に便利!

最小の迷路(?)は、W=5:H=5 です。

乱数列を初期化する SRNDコマンド を使うと、毎回同じ迷路が出せます。

15 SRND 1

ステージ番号を入力するようにすれば、友達と競争できますね!

15 INPUT"STAGE?",N:SRND N

タイムを計測したくなったら、CLT/TICK()を使いましょう。

45 CLT 50 LCX,Y:?"o";:IFX=W&&Y=H ?TICK():END

IchigoSoda(+IoTファームβ)を使えば、ネットから出題されるステージに対して、ハイスコアランキングも簡単!

15 N=IoT.IN():IF N=0 CONT ELSE SRND N 50 LCX,Y:?"o";:IFX=W&&Y=H N=TICK():IoT.OUT N:END

小学生の頃、好きだったMSXの投稿ゲーム「Monochrome Venus by TEIJIRO」(レビュー)のように敵を登場させて、RPG風に仕上げるのもきっと楽しいですよ。

古典ゲームとIoT、ネット対戦、モーター・センサーとの組み合わせ、新しい展開見えるかも!?

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像