<!DOCTYPE html>
<html>
<head>
	<title>吃豆子游戏</title>
	<style type="text/css">
		body{
			margin: 0;
			padding: 0;
		}
		#game{
			width: 600px;
			height: 400px;
			margin: 20px auto;
			border: 1px solid #ccc;
			position: relative;
		}
		#score{
			position: absolute;
			top: 10px;
			right: 10px;
			font-size: 20px;
			color: #f00;
			font-weight: bold;
		}
		#start{
			position: absolute;
			top: 180px;
			left: 250px;
			font-size: 30px;
			color: #f00;
			font-weight: bold;
			cursor: pointer;
			border: 1px solid #f00;
			padding: 10px 20px;
		}
	</style>
</head>
<body>
	<div id="game">
		<div id="score"></div>
		<div id="player" style="position: absolute; left: 10px; top: 10px; width: 20px; height: 20px; background-color: green;"></div>
	</div>
	<button id="start">开始游戏</button>
<pre><code>&lt;script type=&quot;text/javascript&quot;&gt;
	var game = document.getElementById(&quot;game&quot;); //游戏区域
	var player = document.getElementById(&quot;player&quot;); //角色
	var score = document.getElementById(&quot;score&quot;); //分数
	var startBtn = document.getElementById(&quot;start&quot;); //开始游戏按钮

	var playerX = 10, playerY = 10; //角色初始位置
	var monsterNum = 5; //怪物数量
	var monsters = []; //怪物数组

	var scoreNum = 0; //分数
	var gameStarted = false; //游戏是否开始
	var bulletSpeed = 5; //子弹速度

	//创建怪物
	function createMonster(){
		var monster = document.createElement(&quot;div&quot;);
		monster.style.position = &quot;absolute&quot;;
		monster.style.width = &quot;10px&quot;;
		monster.style.height = &quot;10px&quot;;
		monster.style.borderRadius = &quot;50%&quot;;
		monster.style.backgroundColor = &quot;red&quot;;
		monster.style.left = Math.floor(Math.random() * (game.offsetWidth - 20)) + &quot;px&quot;;
		monster.style.top = Math.floor(Math.random() * (game.offsetHeight - 20)) + &quot;px&quot;;
		game.appendChild(monster);
		monsters.push(monster);
	}

	//移动怪物
	function moveMonster(monster){
		var direction = Math.floor(Math.random() * 4); //随机方向
		var speed = Math.floor(Math.random() * 5) + 1; //随机速度
		var x = parseInt(monster.style.left);
		var y = parseInt(monster.style.top);
		switch(direction){
			case 0: //向上
				y -= speed;
				break;
			case 1: //向右
				x += speed;
				break;
			case 2: //向下
				y += speed;
				break;
			case 3: //向左
				x -= speed;
				break;
		}
		if(x &lt; 0){
			x = 0;
		}
		if(x &gt; game.offsetWidth - 10){
			x = game.offsetWidth - 10;
		}
		if(y &lt; 0){
			y = 0;
		}
		if(y &gt; game.offsetHeight - 10){
			y = game.offsetHeight - 10;
		}
		monster.style.left = x + &quot;px&quot;;
		monster.style.top = y + &quot;px&quot;;
	}

	//碰撞检测
	function checkCollision(){
		for(var i = 0; i &lt; monsters.length; i++){
			var monster = monsters[i];
			var monsterX = parseInt(monster.style.left);
			var monsterY = parseInt(monster.style.top);
			var playerX1 = playerX + 10;
			var playerY1 = playerY + 10;
			if(playerX &lt; monsterX + 10 &amp;&amp; playerX1 &gt; monsterX &amp;&amp; playerY &lt; monsterY + 10 &amp;&amp; playerY1 &gt; monsterY){
				scoreNum++;
				score.innerHTML = &quot;得分:&quot; + scoreNum;
				game.removeChild(monster);
				monsters.splice(i, 1);
				i--;
			}
		}
	}

	//发射子弹
	function shoot(){
		var bullet = document.createElement(&quot;div&quot;);
		bullet.style.position = &quot;absolute&quot;;
		bullet.style.width = &quot;5px&quot;;
		bullet.style.height = &quot;5px&quot;;
		bullet.style.borderRadius = &quot;50%&quot;;
		bullet.style.backgroundColor = &quot;black&quot;;
		bullet.style.left = playerX + 10 + &quot;px&quot;;
		bullet.style.top = playerY + 10 + &quot;px&quot;;
		game.appendChild(bullet);
		var timer = setInterval(function(){
			var x = parseInt(bullet.style.left);
			var y = parseInt(bullet.style.top) - bulletSpeed;
			bullet.style.top = y + &quot;px&quot;;
			if(y &lt; 0){
				clearInterval(timer);
				game.removeChild(bullet);
			}
			for(var i = 0; i &lt; monsters.length; i++){
				var monster = monsters[i];
				var monsterX = parseInt(monster.style.left);
				var monsterY = parseInt(monster.style.top);
				if(x &lt; monsterX + 10 &amp;&amp; x + 5 &gt; monsterX &amp;&amp; y &lt; monsterY + 10 &amp;&amp; y + 5 &gt; monsterY){
					game.removeChild(monster);
					monsters.splice(i, 1);
					i--;
					game.removeChild(bullet);
					clearInterval(timer);
					setTimeout(function(){
						game.appendChild(createStar(monsterX, monsterY));
					}, 3000);
				}
			}
		}, 20);
	}

	//创建星星
	function createStar(x, y){
		var star = document.createElement(&quot;div&quot;);
		star.style.position = &quot;absolute&quot;;
		star.style.width = &quot;5px&quot;;
		star.style.height = &quot;5px&quot;;
		star.style.backgroundColor = &quot;#ff0&quot;;
		star.style.left = x + &quot;px&quot;;
		star.style.top = y + &quot;px&quot;;
		game.appendChild(star);
		var timer = setInterval(function(){
			var opacity = parseFloat(star.style.opacity);
			if(opacity &gt; 0){
				opacity -= 0.1;
				star.style.opacity = opacity;
			}else{
				clearInterval(timer);
				game.removeChild(star);
			}
		}, 300);
	}

	//按键事件
	document.onkeydown = function(event){
		if(gameStarted){
			event = event || window.event;
			switch(event.keyCode){
				case 37: //左
					playerX -= 5;
					if(playerX &lt; 0){
						playerX = 0;
					}
					player.style.left = playerX + &quot;px&quot;;
					break;
				case 38: //上
					playerY -= 5;
					if(playerY &lt; 0){
						playerY = 0;
					}
					player.style.top = playerY + &quot;px&quot;;
					break;
				case 39: //右
					playerX += 5;
					if(playerX &gt; game.offsetWidth - 20){
						playerX = game.offsetWidth - 20;
					}
					player.style.left = playerX + &quot;px&quot;;
					break;
				case 40: //下
					playerY += 5;
					if(playerY &gt; game.offsetHeight - 20){
						playerY = game.offsetHeight - 20;
					}
					player.style.top = playerY + &quot;px&quot;;
					break;
				case 32: //空格
					shoot();
					break;
			}
		}
	}

	//开始游戏
	startBtn.onclick = function(){
		if(!gameStarted){
			gameStarted = true;
			this.style.display = &quot;none&quot;;
			for(var i = 0; i &lt; monsterNum; i++){
				createMonster();
			}
			setInterval(function(){
				for(var i = 0; i &lt; monsters.length; i++){
					moveMonster(monsters[i]);
				}
				checkCollision();
			}, 50);
		}
	}
&lt;/script&gt;
</code></pre>
</body>
</html>
写出一款吃豆子的网页游戏的代码要求:有游戏开始和结束功能角色用数字0代替怪物用数字1代替;整个游戏内容都在可见有限空间;怪物数量和出现为随机出现;每个怪物可以自由方向随机移动;当角色接触到怪物时怪物消失得一分并将得分累计显示出来;角色可以由方向键自由移动;角色为绿色方块怪物为红色圆点;点击游戏开始按钮才能开始游戏;角色可以通过空格键发射子弹子弹为小黑点小黑点形状小于怪物;子弹接触到怪物怪物变成五个

原文地址: https://www.cveoy.top/t/topic/bi32 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录