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

説明

ボスの口から吐き出される葉っぱ(棒ですが)を避けつつ、ボスの口を撃って倒してください。葉っぱ(棒みたいですが)に当たると即ゲームオーバーです。自機はカーソルキーの上下左右で動かすことができます。ショットはスペースキーです。ボスの耐久度は口の所に表示されており0になるとゲームクリアとなります。なお、無敵状態にしたい場合はif(scr(fx,fy)>31){の31を331などに変更してください。

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

// Boss 1
var leaf=new Array();
var fx=5,fy=11;
var bx=0,by=-1,k=0;
var bossX=22,bossY=11,pow=3;
var n=0,r=0;
while(n<6){
  var p=n*5;
  leaf[p]=0; // Flag
  leaf[p+1]=-1; // X
  leaf[p+2]=-1; // Y
  leaf[p+3]=0; // dy
  leaf[p+4]=rnd(9); // rotate
  n=n+1;
}
function key(n){ k=n; }
function main(){
  // move fighter
  if((k==28)*(fx>0)){fx=fx-1;}
  if((k==29)*(fx<21)){fx=fx+1;}
  if((k==30)*(fy>2)){fy=fy-1;}
  if((k==31)*(fy<21)){fy=fy+1;}
  if((k==32)*(by<0)){bx=fx;by=fy;}
  k=0;
  // start leaf
  if(rnd(10)<4){
    var n=0;
    while(n<6){
      var p=n*5;
      if(leaf[p]==0){
        leaf[p]=1;
        leaf[p+1]=bossX*10;
        leaf[p+2]=bossY*10;
        leaf[p+3]=fy-bossY;
        n=99;
      }
      n=n+1;
    }
  }
  // move boss
  bossY=11+sin8(r)/45;
  r=r+5;
  cls();
  lc(bossX,bossY-4);log("#######");
  lc(bossX,bossY-3);log("#o#####");
  lc(bossX,bossY-2);log("#######");
  lc(bossX,bossY-1);log("#######");
  lc(bossX,bossY);log(pow,"######");
  lc(bossX,bossY+1);log("#######");
  // move leaf
  var n=0;
  while(n<6){
    var p=n*5;
    if(leaf[p]==1){ // to left
      leaf[p+1]=leaf[p+1]-10;
      if(leaf[p+1]<10){ leaf[p]=0; }
      leaf[p+2]=leaf[p+2]+leaf[p+3];
      if((leaf[p+2]<0)+(leaf[p+2]>210)){ leaf[p]=0; }
      leaf[p+4]=leaf[p+4]+1;
      lc(leaf[p+1]/10,leaf[p+2]/10);
      var a=leaf[p+4]%4;
      if(a==0){ log("-"); }
      if(a==1){ log("/"); }
      if(a==2){ log("|"); }
      if(a==3){ log("\\"); }
    }
    n=n+1;
  }
  // move beam
  if((bx<29)*(by>-1)){
    bx=bx+1;
    lc(bx,by);log("--");
    if(bx==28){ by=-1; }
  }
  if(scr(fx,fy)>31){
    lc(11,9);
    log("Game Over");
    lc(0,0);
    exit();
  }
  lc(fx,fy);log(">");
  if((bx==bossX)*(by==bossY)){
    pow=pow-1;
    by=-1;
    if(pow<1){
      lc(11,9);
      log("Game Clear!");
      lc(0,0);
      exit();
    }
  }
  setTout(main,50);
}
setKprs(key);
main();

目次に戻る