<html> <head> <title>シューティングゲーム</title> <script language="JavaScript"><!-- //プレロード処理 main=new Image(); main.src="img/main.gif"; teki=new Image(); teki.src="img/teki.gif"; tama=new Image(); tama.src="img/tama.gif"; ttama=new Image(); ttama.src="img/ttama.gif"; ttama2=new Image(); ttama2.src="img/ttama2.gif"; //ゲームスタート処理 gameStartFlag=false; //ゲームオーバー処理 gameOverFlag=false; function gStart(){ gameStartFlag=true; moveTeki(); moveMain(); } //ゲームのリトライ処理 function gRetry(){ if(gameOverFlag==false)return; gameOverFlag=false; document.top.style.left=80; document.images["main"].src="img/main.gif"; document.images["teki"].src="img/teki.gif"; document.main.style.left=30; document.main.style.top=100; document.teki.style.left=260; document.teki.style.top=100; document.tama.style.top=-50; document.etama.style.top=-50; document.etama2.style.top=-50; mainX=20; //mainの座標 mainY=250; tekiX=0; //敵の座標 tekiY=0; tamaFlag=false; //自機の玉発射 enTamaFlag=false; //trueなら発射、falseなら発射しない。 hit=5; //ヒット回数 } //自機の移動 mainX=20; //自機のX座標の最初の値 mainY=270; //自機のY座標の最初の値 function moveMain(){ if(gameStartFlag==false)return; if(gameOverFlag==true)return; document.top.style.left=-500; if(event.keyCode==37){ //左を押されたとき if(mainX==0){ return; } mainX=mainX-4; //左へ移動 } if(event.keyCode==39){ //右を押されたとき if(mainX>300){ return; } mainX=mainX+4; //右へ移動 } if(event.keyCode==38){ //上を押されたとき if(mainY<0){ return; } mainY=mainY-4; //上へ移動 } if(event.keyCode==40){ //下を押されたとき if(mainY>300){ return; } mainY=mainY+4; //下へ移動 } if(event.keyCode==17)startTama(); //玉の発射 document.main.style.left=mainX; document.main.style.top=mainY; } //敵の移動 tekiX=0; //敵のX座標 tekiY=0; tekiDx=2; //移動する値 function moveTeki(){ if(gameStartFlag==false)return; if(gameOverFlag==true)return; tekiX=tekiX+tekiDx; if(tekiX>290){tekiDx=-2;tekiY=tekiY+5;} //敵の座標が290を超えると-2にする。 if(tekiX<0){tekiDx=2;tekiY=tekiY+5;} //敵の座標が0未満になったら2にする。 document.teki.style.left=tekiX; document.teki.style.top=tekiY; enTama(); //敵の玉発射 moveEnTama(); //敵玉の移動 enHit(); //敵の玉のヒットチェック enHit2(); //敵の玉2のヒットチェック moveTama(); //玉の移動 mainHit(); //自機のヒットチェック setTimeout("moveTeki()",25); } //敵の玉発射 enTamaFlag=false; //trueなら発射、falseなら発射しない。 enTamaX=0; enTamaY=0; enY=0; enTama2X=0; enTama2Y=0; en2X=0; en2Y=0; function enTama(){ if(enTamaFlag==true)return; enTamaFlag=true; enTamaX=tekiX+13; enTamaY=tekiY+50; document.etama.style.left=enTamaX; document.etama.style.top=enTamaY; enTama2X=tekiX+43; enTama2Y=tekiY+50; document.etama2.style.left=enTama2X; document.etama2.style.top=enTama2Y; } //敵の玉を移動させる function moveEnTama(){ enTamaY=enTamaY+5; // enTamaX=enTamaX+5; document.etama.style.top=enTamaY; // document.etama.style.top=enTamaX; enTama2Y=enTama2Y+5; document.etama2.style.top=enTama2Y; if(enTamaY==350){ enTamaFlag=false; } } //敵の玉のヒット判定 function enHit(){ if((mainX+40)<enTamaX+3)return; //自機X軸+幅が敵X座標よりも小さい if((enTamaX+3)<mainX)return; //敵X座標+幅が自機X座標よりも小さい if((mainY+51)<enTamaY)return; //自機Y座標+幅が敵Y座標よりも小さい if((enTamaY+3)<mainY)return; //敵Y座標+幅が自機Y座標よりも小さい if(gameOverFlag==true)return; //同時に2つの玉が当たった処理 document.images["main"].src="img/bakuha.gif"; alert("アボーン"); gameOverFlag=true; //ゲーム終了 gameStartFlag=false; //スタートフラグfalse } //敵の玉2のヒット判定 function enHit2(){ if((mainX+40)<enTama2X+3)return; //自機X軸+幅が敵X座標よりも小さい if((enTama2X+3)<mainX)return; //敵X座標+幅が自機X座標よりも小さい if((mainY+51)<enTama2Y)return; //自機Y座標+幅が敵Y座標よりも小さい if((enTama2Y+3)<mainY)return; //敵Y座標+幅が自機Y座標よりも小さい if(gameOverFlag==true)return; //同時に2つの玉が当たった処理 document.images["main"].src="img/bakuha.gif"; alert("アボーン"); gameOverFlag=true; //ゲーム終了 gameStartFlag=false; //スタートフラグfalse } //玉の発射 tamaFlag=false; //trueなら発射、falseなら発射しない。 tamaX=0; tamaY=0; function startTama(){ if(tamaFlag==true)return; //発射されていたら処理を抜ける tamaFlag=true; tamaY=mainY-10; tamaX=mainX+23; } //玉を移動させる function moveTama(){ if(tamaFlag==false)return; tamaY=tamaY-5; document.tama.style.left=tamaX; document.tama.style.top=tamaY; if(tamaY<-40)tamaFlag=false; //玉が見えなくなったら消す hitCheck(); } //自機のヒット判定 function mainHit(){ if((mainX+40)<tekiX+10)return; //自機X軸+幅が敵X座標よりも小さい if((tekiX+31)<mainX)return; //敵X座標+幅が自機X座標よりも小さい if((mainY+51)<tekiY)return; //自機Y座標+幅が敵Y座標よりも小さい if((tekiY+32)<mainY)return; //敵Y座標+幅が自機Y座標よりも小さい document.images["main"].src="img/bakuha.gif"; alert("アボーン"); gameOverFlag=true; //ゲーム終了 gameStartFlag=false; //スタートフラグfalse } hit=5; //ヒット回数 function hitCheck(){ if((tamaX+6)<tekiX+10)return; //X軸+幅が敵X座標よりも小さい if((tekiX+31)<tamaX)return; //敵X座標+幅がビームX座標よりも小さい if((tamaY+32)<tekiY)return; //ビームY座標+幅が敵Y座標よりも小さい if((tekiY+32)<tamaY)return; //敵Y座標+幅がビームY座標よりも小さい document.tama.style.left=-50; hit=hit-1; tamaFlag=false; if(hit==0){ document.images["teki"].src="img/bakuha.gif"; alert("倒しました"); gameOverFlag=true; //ゲーム終了 gameStartFlag=false; //スタートフラグfalse } } //--></script> </head> <body background="img/bg.jpg" onKeydown="moveMain()" onLoad="moveTeki()"> <img src="img/main.gif" name="main" style="position:absolute;left:30;top:100;"> <img src="img/teki.gif" name="teki" style="position:absolute;left:260;top:100;"> <img src="img/top.gif" name="top" style="position:absolute;left:80;top:110;"> <img src="img/tama.gif" name="tama" style="position:absolute;left:0;top:-50;"><br><br> <img src="img/ttama.gif" name="etama" style="position:absolute;left:0;top:-50;"><br><br> <img src="img/ttama2.gif" name="etama2" style="position:absolute;left:0;top:-50;"><br><br> <pre> <font color="white"> <シューティングゲーム> 矢印で自機の移動、ctrlで弾を発射します。 5回敵に攻撃を当てれば勝ちです。ゲーム中に スタートを押すと動きが早くなるのは仕様です。 </font> <form name="gform"> <input type="button" value="スタート" onClick="gStart()"> <input type="button" value="リトライ" onClick="gRetry()"> </form> </pre> </body> </html>