- タイトル
マインスイーパーlatte (電子工作マガジン2017年WINTER号掲載) - 開発環境
IchigoJamBASIC1.2.1 - 内容
マインスイーパーです。 - 遊び方
フィールドの中から爆弾を探すゲームです。 爆弾に隣接しているマスは隣接している爆弾の数が表示されるので、それをヒントに全てのマスを開けてください。 - 操作方法
横方向(X軸)と縦方向(Y軸)を入力してマスを開きます。 それぞれ1~8の数字を入力し、Enterします。 全て開けられれば成功、爆弾を開けてしまうと失敗です。 最後にかかった時間が表示されます。 - プログラムのしくみ
各関数の説明 bm.clr フィールド用メモリクリア bm.set 爆弾配置 bm.disp 画面表示
引数 0:爆弾を伏せて表示 1:爆弾を表示
返値 開いていないマスの数kyin キー入力
引数 xy:"X"または"Y"の文字 pos:文字表示Y座標
返値 入力された数値search マスを開く
引数 入力したX,Y座標
返値 0:爆弾以外を開いた 0以外:爆弾を開いたmain 初期設定、画面表示
残りマス=爆弾数、もしくは爆弾を開いてしまうまでループ
結果表示
変数表(グローバル変数のみ) B 爆弾の数 T ゲーム開始時のタイム m メモリ(配列)先頭アドレス x,y 入力した座標 n 残りマス数 s 入力座標が爆弾かどうか - プログラムの具体的な入力方法
可読性を良くするためスペースでインデントしていますが、行頭のスペースは入力しなくても動作します。 - プログラムの改造
変数"B"は爆弾の数です。増減して難易度を変更することができます。 - 参考ゲーム
マインスイーパー
(プログラム1) |
---|
var B=6; function bm(f){ this.clr=function(){ var i=0; while(i<100 ){ if((i>10)*(i<89 )*((i%10)%9!=0)){ mem(m+i,0xF4); } else{ mem(m+i,0); } i=i+1; } }; this.set=function(){ var i=B, r; while(i){ r=(rnd(8)+1)*10+rnd(8)+1; if(mem(m+r)==0xF4){ mem(m+r,0xF6); i=i-1; } } }; this.disp=function(f){ var i=1, c, n=0; cls(); log("\\X12345678\nY\n"); while(i<9){ var j=0; log(i); while(j<9){ c=mem(m+i*10+j); if((c>0)*(c<9 )){ c=c+0x30; } else{ if((c>9)*(f==0)){ c=0xF4; } } log(chr(c)); if(c==0xF4){ n=n+1; } j=j+1; } log("\n"); i=i+1; } return(n); }; } function kyin(xy,pos){ lc(0,pos); log(xy,"= "); var k=input(); if((k<1 )*(k>8)){ k=0; } return(k); } function search(u,v){ var sp=m+100; //stack pointer var src=v*10+u; //search position var z=mem(m+src); //search position char if(((u%10)%9==0)*((v%10)%9==0)){ return(0); } //out side if(z<=9){ return(0); } //number if(z==0xF6){ return(z); } //bomb var indx=0; mem(sp,1); //[0]=1 mem(sp+1,src); //[[0]]=[1]=src var x, y, z, j, count=0; while(indx |
MixJuiceでのダウンロードURLは下記になります。
mine_latte http://tagiyasoft.blog.jp/mine_latte.bin
以下のように入力してD/Lしてください。
NEW ? MJ GET http://tagiyasoft.blog.jp/mine_latte.bin |
ブラウザでD/LしてIchigoJamに転送する場合は、通信ソフトでバイナリ送信をしてください。
(例:TeraTermの場合は、メニューの[ファイル]-[ファイル送信]で当該ファイルを送信します)
コメント