某ゲームの2面のボス戦みたいなゲーム

説明

回転する葉っぱをスペースキーで撃って全部壊せばゲームクリアです。上から降ってくる@にあたるとゲームオーバーです。自機はカーソルキーの上下左右で動かすことができます。

[以下のJavaScriptプログラムをダウンロード]

// Boss 2
var leaf=new Array();
var n=0,total=8;
while(n<8){
  leaf[n]=45*n;
  n=n+1;
}
var fx=5,fy=11,k=0,rr=240;
var baseY=20,baseX=23;
var bx=32,by=0;
var tx=0,ty=0;
function key(n){ k=n; }
function main(){
  // move fighter
  if ((k==28)*(fx>0)){ fx=fx-1; }
  if ((k==29)*(fx<13)){ fx=fx+1; }
  if ((k==30)*(fy>1)){ fy=fy-1; }
  if ((k==31)*(fy<21)){ fy=fy+1; }
  if((k==32)*(bx>28)){
    bx=fx;
    by=fy;
  }
  ty=ty+1;
  if(ty>22){
    tx=fx+rnd(2);
    ty=0;
  }
  k=0;
  cls();
  lc(baseX-1,baseY-1);log(" # ");
  lc(baseX-1,baseY);log("###");
  lc(baseX-1,baseY+1);log("###");
  lc(fx,fy);log(">");
  lc(tx,ty);log("@");
  // move beam
  if (bx<29){
    bx=bx+1;
    lc(bx,by);log("--");
  }
  // move leaf
  var n=0;
  var r=rr/10;
  while(n<8){
    if (leaf[n]>-1){
      leaf[n]=leaf[n]+8;
      var x=baseX+sin8(leaf[n]+90)*r/250;
      var y=baseY+sin8(leaf[n])*r/250;
      lc(x,y);
      if(((bx==x)+(bx+1==x))*(by==y)){
        leaf[n]=-1;
        bx=32;
        log("*");
        total=total-1;
        if(total==0){
          lc(11,9);
          log("Game Clear");
          lc(0,0);
          exit();
        }
      }else{
        if((x>-1)*(x<31)*(y>-1)*(y<22)){
          log("O");
        }
      }
    }
    n=n+1;
  }
  if((fx==tx)*(fy==ty)){
    lc(fx,fy);
    log("**");
    lc(11,9);
    log("Game Over");
    lc(0,0);
    exit();
  }
  if(rr>60){ rr=rr-5; }
  if((baseY>11)*(rr%10==0)){ baseY=baseY-1; }
  setTout(main,20);
}
setKprs(key);
main();

目次に戻る