メモ帳でできるプログラミング JavaScript

モグラたたき

デモ

もぐらたたきゲーム

プログラム

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>もぐらたたきゲーム</title>
<style>
#a td {
	width: 100px;
	height: 100px;
	font-size: 50px;
	border: 1px solid #ccc;
	text-align:center;
}
#message {
	font-size:200%;
	font-weight:bold;
	color:#c00;
}
</style>
<script>
window.onload = function() {

	//9個のマスのID
	var ids = ['b1','b2','b3','b4','b5','b6','b7','b8','b9'];

	//ランダムにモグラを出す処理
	function moguraDasu()
	{
		//20%ぐらいの確率でモグラを出すことにする
		if (Math.random() < 0.2) {
			var masu = document.getElementById(ids[Math.floor(Math.random()*9)]);
			//ただしモグラを出すのはモグラがいないマス
			if (masu.innerHTML == '') {
				masu.innerHTML = 'も';
				setTimeout(function(){moguraKakusu(masu);}, 1000);
			}
		}
	}

	//出したモグラを隠す処理
	function moguraKakusu(masu)
	{
		masu.innerHTML = '';
	}

	//たたいた時の処理
	function tataita(e)
	{
		if (e.target.innerHTML == 'も') {
			document.getElementById('message').innerHTML = '○ あたり!';
			e.target.innerHTML = '';
		} else {
			document.getElementById('message').innerHTML = '× はずれ!';
		}
	}

	//各マスをたたいたときに実行するよう設定しておく
	document.getElementById('b1').addEventListener('click', tataita);
	document.getElementById('b2').addEventListener('click', tataita);
	document.getElementById('b3').addEventListener('click', tataita);
	document.getElementById('b4').addEventListener('click', tataita);
	document.getElementById('b5').addEventListener('click', tataita);
	document.getElementById('b6').addEventListener('click', tataita);
	document.getElementById('b7').addEventListener('click', tataita);
	document.getElementById('b8').addEventListener('click', tataita);
	document.getElementById('b9').addEventListener('click', tataita);
	
	//モグラを出す処理を呼ぶ(1回目)
	moguraDasu();
	//そのあとも0.1秒ごとに呼ぶ
	setInterval(moguraDasu, 100);
}
</script>
</head>
<body>
	<h1>もぐらたたきゲーム</h1>
	<table id="a">
		<tbody>
			<tr><td id="b1"></td><td id="b2"></td><td id="b3"></td></tr>
			<tr><td id="b4"></td><td id="b5"></td><td id="b6"></td></tr>
			<tr><td id="b7"></td><td id="b8"></td><td id="b9"></td></tr>
		</tbody>
	</table>
	<div id="message"></div>
</body>
</html>

解説

なるべく簡単に見えるように書いてみました。

時間制限、得点加算などはまだしていません。

単純にモグラをだす。叩ける。判定できる。といったところまでです。