はじめまして。
html初心者です。 下記のインベーダーゲームのソースをメモ帳にコピペしてデスクトップ上に保存し、ファイルを開いたところ、文字ばかりで画面が出ません。 画面が出るようにするにはどうすればいいか、ご教示いただけたら、幸いです。
*init title"Invader"//タイトルの表示 #define winx 320//画面のXサイズ #define winy 240//画面のYサイズ
//自機の初期設定 x=153.0:y=220.0//自機の初期位置 bsp=4.0//弾の移動速度
//敵の初期設定 dim ex,51//敵のX座標。方向転換用に+1しておく。 dim ey,50//敵のY座標 dim ef,50//敵が生きているフラグ dim dead,50//敵が死んでいて消滅パターンを表示するフラグ dim d_co,50//敵の消滅パターン表示用カウンタ wt=0//ゲームスピード調整用 esp=1//敵の移動速度 di=0//敵の移動方向(0は右に移動する、1は左に移動する) dim ebx,50//敵の弾X座標 dim eby,50//敵の弾Y座標 dim ebf,50//敵の弾フラグ
for i,0,50 ex.i=(i\10)*24//敵のX座標 if (i>=0 & i<10):ey.i=16//敵のY座標 if (i>=10 & i<20):ey.i=32//敵のY座標 if (i>=20 & i<30):ey.i=48//敵のY座標 if (i>=30 & i<40):ey.i=64//敵のY座標 if (i>=40 & i<50):ey.i=80//敵のY座標 ef.i=1//敵が生きているフラグ dead.i=0//敵が死んでいて消滅パターンを表示するフラグ d_co.i=0//敵の消滅パターン表示用カウンタ next
//スコア sc=0
screen 0,winx,winy,0//画面作成 cls 4//画面消去 pos 80,100:color 255,255,255:mes"Push space to start!"//スタート画面
*start stick st//入力設定 if st=16:goto *start2//スペースキーで次へ await//ウェイト goto *start//戻る
*start2 cls 4//画面消去 pos 130,100:color 255,255,255:mes"Ready!"//ゲーム開始表示 await 1000//ウェイト
*main redraw 0//画面を描画しない color 0,0,0:boxf 0,0,winx,winy//黒で画面全体を塗り潰す
//弾を撃つ stick s//スペースキーが押されているか判定する準備 if s=16 & bl=0:bl=1:bx=x+3:by=y-16//スペースキーが押されていて、画面上に弾がなければ弾が画面上にあるというフラグを1にして、弾の座標を自機の上に設定する
//左右に移動する getkey left,37:if left=1:x-=2//カーソルキー左が押されていたら自機を左に移動する getkey right,39:if right=1:x+=2//カーソルキー右が押されていたら自機を右に移動する x=limit(x,0,winx-16)//自機のX座標の範囲を設定する
//自機表示 color 255,255,255:pos x,y:mes"凸"
//弾のフラグが立っていれば弾を表示する if bl=1:{ color 255,255,255:pos bx,by:mes"|"//弾を表示する by-=bsp:if by<-16:bl=0//弾のY座標を更新し、画面から消えたら弾が画面上にあるというフラグを0にする }
//ゲームスピード wt+=1:if wt>=wtmax:wt=0
//敵の移動 for i,0,50 //右へ移動する if di=0 & wt=0:{ ex.50=0:rightmax=50//一番右にいる敵の座標を調べる準備 for j,0,50 if ef.j=0:_continue//敵が消滅していたら次の敵 if ex.rightmax=300:for k,i+1,50:ex.k+=esp:next:di=1:for i,0,50:ey.i+=16:next//一番右にいる敵が右端まで行ったら、以降の敵を右に移動し、移動方向を左にして、全ての敵のY座標を更新 } //左へ移動する if di=1 & wt=0:{ ex.50=320:leftmax=50//一番左にいる敵の座標を調べる準備
for j,0,50 if ef.j=0:_continue//敵が消滅していたら次の敵 if ex.j20:pt=1-pt:p_co=0//敵アニメ
for i,0,50 if ef.i=1:{//敵が生きていたら color 255,0,0:pos ex.i,ey.i if pt=0:mes"W"//敵表示(パターン0) if pt=1:mes"V"//敵表示(パターン1) } if dead.i=1:color 255,0,0:pos ex.i,ey.i:mes"*":d_co.i++:if d_co.i=10:dead.i=0//敵の消滅パターン表示 next
//敵の弾 eb_count=0//画面上の敵の弾の数を数える準備 for i,0,50 eb_count+=ebf.i//画面上の敵の弾の数を数える next
r=rnd(50) if eb_count<4 & ef.r=1 & ebf.r=0:{//敵の弾が4つより少なく、その敵が生きていて弾を発射していない場合 ebf.r=1//敵の弾のフラグを立てる ebx.r=ex.r+7//敵の弾のX座標を設定する eby.r=ey.r+14//敵の弾のY座標を設定する eb_count++//敵の弾のカウントを一つ増やす }
for i,0,50 if ebf.i=1:eby.i+=2:if eby.i>320:ebf.i=0//敵の弾のフラグが立っていたらY座標を更新し、画面下に消えたらフラグを下げる if ebf.i=1:color 255,0,0:pos ebx.i,eby.i:mes"|"//敵の弾のフラグが立っていたら表示する next
//スコア表示 color 255,255,255 pos 10,0:mes"SCORE:"+sc pos 120,0:mes"HI-SCORE:"+hi
//自機の弾の当たり判定 for i,0,50 if ef.i=0:_continue//敵が消滅していたら次の敵 if(abs(ex.i-bx+5)<=7 & abs(ey.i-by)<=14):{//自機の弾が敵に当たったら ef.i=0 //敵のフラグを0にする dead.i=1 //消滅パターン表示フラグを1にする bl=0 //自機の弾のフラグを0にする by=320 //自機の弾のY座標を画面外に設定 sc+=100:if sc>hi:hi=sc//スコア加算、ハイスコア更新 _break } next
//敵の弾の当たり判定 for i,0,50 if ebf.i=0:_continue//敵の弾がなければ次の弾 if(abs(x-ebx.i+5)<=7 & abs(y-eby.i)<=14):gosub *gameover_sub:goto *init//敵の弾が自機に当たったらゲームオーバーサブルーチンに飛び、ゲーム初期化 next
//クリア判定 cl=0//クリア判定フラグを初期化 for i,0,50 cl=cl+ef.i//全ての敵の生きているかどうかのフラグを足す next if cl=0:color 0,0,0:boxf 0,0,319,219:pos 130,100:color 255,255,255:mes"Clear!":redraw 1:await 2000:goto *init//敵が全滅していたらクリア表示し、初期設定に戻る
wtmax=cl/8.0//敵の残りが少ないほどゲームスピードをアップする if cl<5:esp=2//敵の数が5より少なくなったら敵の移動速度を2にする if cl=1:esp=4//敵の数が1になったら敵の移動速度を4にする
//ゲームオーバー判定 for i,0,50 if ef.i=0:_continue//敵が消滅していたら次の敵 if ey.i>=220:gosub *gameover_sub:goto *init//敵が下に達したらゲームオーバー表示し、初期設定に戻る next
await 2//ウェイト redraw 1//画面を描画する goto *main//戻る
//ゲームオーバーサブ *gameover_sub color 0,0,0:boxf x,y,x+15,y+15 //自機を消去 color 255,255,255:pos x,y:mes"*" //自機の爆発パターンを表示 pos 120,100:color 255,255,255:mes"Game Over!" //ゲームオーバー表示 redraw 1 //画面を描画する await 2000 //ウェイト return |
No.1219 - 2014/11/17(Mon) 18:35:53
Re: インベーダーゲームのソースについて / ANGLE | | TOMさん、初めまして! このソースなのですが、HTMLではなく、HSPというスクリプト言語のものです。 HSP公式サイトは下記です。 http://hsp.tv/ HTML5やJavascriptを使用すると同じようなものが作れると思います。 実は私も以前HTML+Javascriptで作ったものがあるので、ソースを貼りますね。 ただ、画像ファイルの利用規約が怪しいので、その辺はご自身で用意していただきたいと思います。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="jquery-1.8.2.min.js"></script> <script type="text/javascript"> var rx=200;//プレイヤーのX座標 var ry=400;//プレイヤーのY座標 var pmx=new Array(215,215,215,215,215);//プレイヤーミサイルのX座標 var pmy=new Array(380,380,380,380,380);//プレイヤーミサイルのY座標 var mf=new Array(0,0,0);//プレイヤーミサイルのフラグ var ex=new Array(80,120,160,200,240,280,320,360,160,240,320,160,240,320,60,410);//敵のX座標 var ey=new Array(60,60,60,60,60,60,60,60,60,60,60,50,50,50,50,50);//敵のY座標 var ef=new Array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);//敵の生存フラグ var ed=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵の移動方向 var emx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルX座標 var emy=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルY座標 var emf=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//敵のミサイルフラグ var bsx=145;//ボスのX座標 var bsy=-100;//ボスのY座標 var bsf=1;//ボスの生存フラグ var bsl=20;//ボスのライフ var bsd=false;//ボスのダメージフラグ var bsd_co=8;//ボスのダメージ画像表示用カウンタ var bslaserx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//ボスレーザーX座標 var bslasery=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//ボスレーザーY座標 var bslsf=0;//ボスレーザー発射中フラグ var clipy=0;//ボス登場クリップ領域 var sy=400;//スクロール量 var cy=-350;//スクロール画面表示位置 var score=0;//スコア var exp=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//爆発フラグ var exp_co=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);//爆発アニメカウンタ var vx=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0);//自機を狙う弾の移動量算出用 var vy=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0);//自機を狙う弾の移動量算出用 var staff=0;//スタッフロール終了フラグ //プレイヤー移動処理 function player(event) { var bar=document.getElementById("bar"); rx=event.clientX-16; ry=event.clientY-16; if (50<=rx && rx+50<=450){ bar.style.left=rx; } if (50<=ry && ry+50<=450){ bar.style.top=ry; } } //プレイヤーミサイル移動処理 function misile() { var TimeId=setTimeout("misile()",5); for(j=0;j<=4;j++){ var ms=document.getElementById("misile"+j); if(mf[j]){ //プレイヤーのミサイルがあれば ms.style.left=pmx[j]; //プレイヤーミサイルX座標 ms.style.top=pmy[j]; //プレイヤーミサイルY座標 ms.style.visibility="visible"; //プレイヤーミサイル表示 //雑魚敵との当たり判定 for(i=0;i<=15;i++){//敵の数だけループ var en=document.getElementById("enemy"+i); if(Math.abs(pmx[j]-(ex[i]+16))<16 && Math.abs(pmy[j]-ey[i])<32 && en.style.visibility=="visible"){ mf[j]=0; //フラグを下ろす ms.style.visibility="hidden"; //プレイヤーのミサイルを非表示にする en.style.visibility="hidden"; //敵を非表示にする ef[i]=0; //敵のフラグを下ろす score+=100; //スコア加算 var sc=document.getElementById("score"); sc.value="Score:"+score; exp[i]=1; //敵の爆発オン exp_co[i]=0; //敵の爆発カウンタ } } //ボスとの当たり判定 var bs=document.getElementById("boss"); if(Math.abs(pmx[j]-(bsx+90))<30 && Math.abs(pmy[j]-(bsy+75))<75 && bs.style.visibility=="visible"){ mf[j]=0; //プレイヤーのミサイルフラグを下ろす ms.style.visibility="hidden"; //プレイヤーのミサイルを非表示にする ms.style.top=-32; bsl--; //ボスのライフを減らす bs.src="img/boss-d.png"; //ボスダメージ用画像に切り替え bsd=true; //ボスダメージフラグをオン bsd_co=8; //ボスダメージ表示用カウンタ if(bsl==0){ //ボスのライフが0なら score+=1000; //スコア加算 var sc=document.getElementById("score"); sc.value="Score:"+score; bsf=0; //ボス生存フラグを下ろす startTime = new Date(); //ボス爆発アニメ時間カウント用 } } //上に移動 pmy[j]-=4; //プレイヤーミサイルY座標を更新 if(pmy[j]<46){ //画面の上に達したら mf[j]=0; //フラグを下ろす ms.style.visibility="hidden"; //非表示にする } } } }
//敵初期 function enemy_init() { setTimeout("enemy()",2000); setTimeout("enemy2()",8000); setTimeout("enemy3()",12000); setTimeout("boss()",16000); setTimeout("enemy4()",19000); startTime = new Date(); var T_ID=setInterval("getTime();",200);//タイム計測スタート } //タイム計測 function getTime() { //ボスが生きていたら if(bsf){ var currentTime = new Date(); time = Math.floor((currentTime - startTime) / 1000); var tm=document.getElementById("time"); tm.value="Time:"+(60-time); if(60-time==0) gameover(); //ボスを倒していてスタッフ表示していなければ }else if(!bsf && staff==0){ var currentTime = new Date(); time = Math.floor((currentTime - startTime) / 1000); if(time==2){
//敵を消す for(i=0;i<=15;i++){ var en=document.getElementById("enemy"+i); en.style.visibility="hidden"; } //ボスを消す var bs=document.getElementById("boss"); bs.style.visibility="hidden"; //爆発を消す for(i=0;i<=22;i++){ var expl=document.getElementById("exp"+i); expl.style.visibility="hidden"; } //スタッフ表示 for(i=1;i<=5;i++){ var st=document.getElementById("staff"+i); st.style.visibility='visible'; } staff=1; startTime = new Date(); } //ボスを倒してスタッフ表示していたら }else if(!bsf && staff==1){ var currentTime = new Date(); time = Math.floor((currentTime - startTime) / 1000); if(time==15){ score=0;//スコアリセット var sc=document.getElementById("score"); sc.value="Score:0"; time=0;//タイムリセット var tm=document.getElementById("time"); tm.value="Time:60"; window.location.reload(); //ページをリロード } } }
//敵1移動処理 function enemy() { var EneId=setTimeout("enemy()",10); //移動 for(i=0;i<=7;i++){ if(ef[i] && staff==0){//生きていたら var en=document.getElementById("enemy"+i); en.style.left=ex[i]; en.style.top=ey[i]; en.style.visibility="visible"; if(ed[i]==0){ ex[i]--; if(ex[i]<50){ ex[i]=50; ey[i]+=32; ed[i]=1; } } if(ed[i]==1){ ex[i]++; if(ex[i]>410){ ex[i]=410; ey[i]+=32; ed[i]=0; } } if(ey[i]>420){ ef[i]=0; var en=document.getElementById("enemy"+i); en.style.visibility="hidden"; //非表示にする } } enemy_attack(); } //敵ミサイル for(i=0;i<=7;i++){ //生きていたら if(ef[i]){ var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生 if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら emx[i]=ex[i]; emy[i]=ey[i]+32; var em=document.getElementById("em"+i); emf[i]=1; em.style.left=emx[i]; em.style.top=emy[i]; em.style.visibility="visible"; } } //ミサイルがあったら if(emf[i]){ var em=document.getElementById("em"+i); em.style.top=emy[i]; emy[i]+=2; if(emy[i]>450){ emf[i]=0; em.style.visibility="hidden"; }
//当たり判定 enemy_misile(); } } }
//敵2移動処理 function enemy2() { var EneId=setTimeout("enemy2()",10); //移動 for(i=8;i<=10;i++){ if(ef[i] && staff==0){//生きていたら var en=document.getElementById("enemy"+i); en.style.left=ex[i]; en.style.top=ey[i]; en.style.visibility="visible"; ey[i]++; if(ex[i]%50==0){ ed[i]=1-ed[i]; } if(ed[i]==0){ ex[i]-=4; } if(ed[i]==1){ ex[i]+=4; } if(ey[i]>420){ ef[i]=0; var en=document.getElementById("enemy"+i); en.style.visibility="hidden"; //非表示にする } } enemy_attack(); } //敵2ミサイル for(i=8;i<=10;i++){ //生きていたら if(ef[i]){ var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生 if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら emx[i]=ex[i]; emy[i]=ey[i]+32; var em=document.getElementById("em"+i); emf[i]=1; em.style.left=emx[i]; em.style.top=emy[i]; em.style.visibility="visible"; } } //ミサイルがあったら if(emf[i]){ var em=document.getElementById("em"+i); em.style.top=emy[i]; emy[i]+=2; if(emy[i]>450){ emf[i]=0; em.style.visibility="hidden"; }
//当たり判定 enemy_misile(); } } } //敵3移動処理 function enemy3() { var EneId=setTimeout("enemy3()",10); //移動 for(i=11;i<=13;i++){ if(ef[i] && staff==0){//生きていたら var en=document.getElementById("enemy"+i); en.style.left=ex[i]; en.style.top=ey[i]; en.style.visibility="visible"; if(ey[i]<150) ey[i]++; } enemy_attack(); } //敵3ミサイル for(i=11;i<=13;i++){ //生きていたら if(ef[i]){ var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生 if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら emx[i]=ex[i]; emy[i]=ey[i]+32; var em=document.getElementById("em"+i); emf[i]=1; em.style.left=emx[i]; em.style.top=emy[i]; em.style.visibility="visible"; //自機を狙う弾 var xx=rx-ex[i]; var yy=ry-ey[i]; var l=Math.sqrt(xx*xx+yy*yy); vx[i]=xx/l*4;//弾のX移動量 vy[i]=yy/l*4;//弾のY移動量
} } //ミサイルがあったら if(emf[i]){ var em=document.getElementById("em"+i); em.style.left=emx[i]; em.style.top=emy[i]; emy[i]+=vy[i]; emx[i]+=vx[i]; if(emy[i]>420||emy[i]<50||emx[i]<50||emx[i]>420){ emf[i]=0; em.style.visibility="hidden"; }
//当たり判定 enemy_misile2(); } } }
//敵4移動処理 function enemy4() { var EneId=setTimeout("enemy4()",10); //移動 for(i=14;i<=15;i++){ if(ef[i] && staff==0){//生きていたら var en=document.getElementById("enemy"+i); en.style.left=ex[i]; en.style.top=ey[i]; en.style.visibility="visible"; if(ey[i]<100) ey[i]++; } enemy_attack(); } //敵4ミサイル for(i=14;i<=15;i++){ //生きていたら if(ef[i]){ var r=Math.floor(Math.random()*100);//ミサイル発射用乱数発生 if(emf[i]==0 && r==1){//ミサイルがなく乱数が1なら emx[i]=ex[i]; emy[i]=ey[i]+32; var em=document.getElementById("em"+i); emf[i]=1; em.style.left=emx[i]; em.style.top=emy[i]; em.style.visibility="visible"; //自機を狙う弾 var xx=rx-ex[i]; var yy=ry-ey[i]; var l=Math.sqrt(xx*xx+yy*yy); vx[i]=xx/l*4;//弾のX移動量 vy[i]=yy/l*4;//弾のY移動量 } } //ミサイルがあったら if(emf[i]){ var em=document.getElementById("em"+i); em.style.left=emx[i]; em.style.top=emy[i]; emy[i]+=vy[i]; emx[i]+=vx[i]; if(emy[i]>420||emy[i]<50||emx[i]<50||emx[i]>420||bsf==0){ emf[i]=0; em.style.visibility="hidden"; }
//当たり判定 enemy_misile2(); } } }
//ボス移動処理 function boss() { var BossId=setTimeout("boss()",10); //移動 if(bsf){//生きていれば var bs=document.getElementById("boss"); if(bsd){ bs.src="img/boss-d.png";//ボスダメージ画像 bsd_co--; if(bsd_co<=0){ bsd=false; } }else{ bs.src="img/boss.png";//ボス通常画像
} //ボス登場演出 if(bsy<50){ bsy++; //ボスY座標 clipy++; //クリップ領域Y座標上 bs.style.clip="rect("+(150-clipy)+",183,"+(150)+",0)"; } bs.style.left=bsx; bs.style.top=bsy; bs.style.visibility="visible"; if((bsx+75)-rx>20 && bsx>65 && bsy==50 && bslsf==0){//ボス左移動判定 bsx-=1; }else if(rx-(bsx+75)>20 && bsx<250 && bsy==50 && bslsf==0){//ボス右移動判定 bsx+=1; }else if(Math.abs(rx-(bsx+75))<32 && bsy==50 && bslsf==0){//ボスレーザー発射判定 bslsf=1; for(i=0;i<=19;i++){ var bsls=document.getElementById("laser"+i); bslaserx[i]=bsx+73; bslasery[i]=bsy+150-i*12; bsls.style.top=bslasery[i]; bsls.style.left=bslaserx[i]; } } }else if(!bsf && staff==0){//やられていたら for(i=16;i<=22;i++){ exp_co[i]++;//爆発アニメカウンタ var expl=document.getElementById("exp"+i); expl.style.visibility="visible"; //表示する var exp_x=Math.floor(Math.random()*183); var exp_y=Math.floor(Math.random()*150)-40; expl.style.top=bsy+exp_y; expl.style.left=bsx+exp_x; if(exp_co[i]<2){ expl.src='img/exp1.png'; }else if(exp_co[i]<4){ expl.src='img/exp2.png'; }else if(exp_co[i]<6){ expl.src='img/exp3.png'; }else if(exp_co[i]<8){ expl.src='img/exp4.png'; }else if(exp_co[i]<10){ expl.src='img/exp5.png'; }else if(exp_co[i]>=10){ exp_co[i]=0; } } } //ボスレーザー if(bslsf){ for(i=0;i<=19;i++){ var bsls=document.getElementById("laser"+i); bsls.style.left=bslaserx[i]; bsls.style.top=bslasery[i]; bslasery[i]+=4; if(bslasery[i]>200){//ある程度画面の下まで来たら非表示だったレーザーを表示する bsls.style.visibility="visible";
} if(bslasery[i]>440){//画面下に達したらレーザーを消す bsls.style.visibility="hidden"; if(i==19){ bslsf=0; } } //ボスレーザーとプレイヤーの当たり判定 if(Math.abs((bslaserx[i]+18)-(rx+16))<36 && Math.abs((bslasery[i]+6)-(ry+16))<12){ bslsf=0; gameover(); } } } }
//プレイヤーと敵との当たり判定 function enemy_attack() { var en=document.getElementById("enemy"+i); if(Math.abs(ex[i]-rx)<32 && Math.abs(ey[i]-ry)<32 && en.style.visibility=="visible"){ ef[i]=0; //フラグを下ろす en.style.visibility="hidden"; //非表示にする gameover(); } } //敵のミサイルとプレイヤーの当たり判定 function enemy_misile() { if(Math.abs(emx[i]-(rx+16))<16 && Math.abs(emy[i]-ry)<32 && emf[i]==1){ var em=document.getElementById("em"+i); emf[i]=0; //フラグを下ろす em.style.visibility="hidden"; //非表示にする gameover(); } }
//敵のミサイル2とプレイヤーの当たり判定 function enemy_misile2() { if(Math.abs(emx[i]-rx)<24 && Math.abs(emy[i]-ry)<24 && emf[i]==1){ var em=document.getElementById("em"+i); emf[i]=0; //フラグを下ろす em.style.visibility="hidden"; //非表示にする gameover(); } } //背景表示 function bg() { var BgId=setTimeout("bg()",40); var obj=document.getElementById("bg"); obj.style.clip="rect("+sy+",400,"+(sy+400)+",0)"; obj.style.top=cy; sy-=2; cy+=2; if(sy==0) { sy=400; cy=-350; }
//爆発アニメ表示 for(i=0;i<=15;i++){ if(exp[i]==1){//爆発中のフラグ exp_co[i]++;//爆発アニメカウンタ var expl=document.getElementById("exp"+i); expl.style.visibility="visible"; //表示する expl.style.top=ey[i]-8; expl.style.left=ex[i]-8; if(exp_co[i]<2){ expl.src='img/exp1.png'; }else if(exp_co[i]<4){ expl.src='img/exp2.png'; }else if(exp_co[i]<6){ expl.src='img/exp3.png'; }else if(exp_co[i]<8){ expl.src='img/exp4.png'; }else if(exp_co[i]<10){ expl.src='img/exp5.png'; }else{ expl.style.visibility="hidden"; //非表示にする exp[i]=0; } } } }
//ゲームオーバー処理 function gameover() { alert("GAME OVER!!"); score=0;//スコアリセット var sc=document.getElementById("score"); sc.value="Score:0"; time=0;//タイムリセット var tm=document.getElementById("time"); tm.value="Time:60"; window.location.reload(); //ページをリロード } </script> </head>
<body onMouseMove="player(event)" onLoad="bg();misile();enemy_init()"> <div id="field">
<img src="img/wall.png" style="position:absolute;left:46;top:46"> <img id="bg" src="img/bg.png" style="position:absolute;left:50;top:50"> <img id="bar" src="img/player.png" style="position:absolute;left:200;top:400">
<form style="position:absolute;left:50;top:20;"> <input id="score" type="text" size="12" value="Score:0"> </form>
<form style="position:absolute;left:150;top:20;"> <input id="time" type="text" size="12" value="Time:60"> </form>
<script type="text/javascript">
//プレイヤーミサイル配置 for(i=0;i<=4;i++){ document.write("<img id='misile"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>"); } //敵1配置 for(i=0;i<=7;i++){ document.write("<img id='enemy"+i+"' src='img/enemy1.png' style='position:absolute;left:"+(i*40+80)+";top:60;visibility:hidden;'>");//敵1 document.write("<img id='em"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>");//敵1のミサイル } //敵2配置 for(i=8;i<=10;i++){ document.write("<img id='enemy"+i+"' src='img/enemy2.png' style='position:absolute;left:"+(i*40+80)+";top:60;visibility:hidden;'>");//敵2 document.write("<img id='em"+i+"' src='img/ms.png' style='position:absolute;visibility:hidden;'>");//敵2のミサイル } //敵3配置及び敵4配置 for(i=11;i<=15;i++){ document.write("<img id='enemy"+i+"' src='img/enemy3.png' style='position:absolute;left:40;top:60;visibility:hidden;'>");//敵3 document.write("<img id='em"+i+"' src='img/ms2.png' style='position:absolute;visibility:hidden;'>");//敵3のミサイル } //ボス配置 document.write("<img id='boss' src='img/boss.png' style='position:absolute;visibility:hidden;'>");//ボス for(i=0;i<=19;i++){ document.write("<img id='laser"+i+"' src='img/laser.png' style='position:absolute;visibility:hidden;'>");//ボスのレーザー } //爆発パターン for(i=0;i<=22;i++){ document.write("<img id='exp"+i+"' src='img/exp1.png' style='position:absolute;visibility:hidden;'>"); } //スタッフロール document.write("<p id='staff1' style='color:#fff;position:absolute;top:100;left:160;visibility:hidden;'>Game Design & Program</p>"); document.write("<p id='staff2' style='color:#fff;position:absolute;top:120;left:160;visibility:hidden;'>ANGLE</p>"); document.write("<p id='staff3' style='color:#fff;position:absolute;top:200;left:160;visibility:hidden;'>Graphic Design</p>"); document.write("<p id='staff4' style='color:#fff;position:absolute;top:220;left:160;visibility:hidden;'>ASD</p>"); document.write("<p id='staff5' style='color:#fff;position:absolute;top:300;left:160;visibility:hidden;'>Thank you for playing!</p>"); //プレイヤーミサイル発射判定 $('#field').click(function(){ //フィールド内でクリックしたら for(i=0;i<=4;i++){ if(!mf[i]){ //画面上にミサイルがなかったら mf[i]=1; //ミサイルのフラグをオン pmx[i]=rx+15; //ミサイルのX座標をプレイヤーのX座標と同じにする pmy[i]=ry-30; //ミサイルのY座標を設定する var ms=document.getElementById("misile"+i); ms.style.left=pmx[i]; ms.style.top=pmy[i]; ms.style.visibility="visible"; break; } } }); </script> </div> </body> </html> |
No.1220 - 2014/11/17(Mon) 21:45:28
|
|