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

説明

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// 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();

目次に戻る