大家好!今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括:控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂,适合初学者学习和实践。
玩家控制:使用键盘的 ←
和 →
键控制飞机的左右移动,按下 空格键
发射子弹。
敌机生成:每隔 1 秒生成一个敌机,敌机从屏幕顶部随机位置向下移动。
碰撞检测:子弹击中敌机后,敌机和子弹都会消失,并增加 10 分;如果玩家飞机与敌机碰撞,游戏结束。
得分统计:击中敌机后,得分会显示在屏幕左上角。
我们使用 元素作为游戏画布,所有的游戏元素(如飞机、子弹、敌机)都将在画布上绘制。
飞机游戏
JavaScript 部分负责实现游戏的核心逻辑,包括玩家控制、敌机生成、碰撞检测和得分统计。
const canvas = document.getElementById('gameCanvas');const ctx = canvas.getContext('2d');canvas.width = 480;canvas.height = 640;// 飞机对象const player = { x: canvas.width / 2 - 25, y: canvas.height - 60, width: 50, height: 50, speed: 5, color: '#00FF00', bullets: [], fire: function() { this.bullets.push({ x: this.x + this.width / 2 - 2.5, y: this.y, width: 5, height: 10, color: '#FF0000' }); }};// 敌机数组const enemies = [];// 得分let score = 0;// 监听键盘事件document.addEventListener('keydown', (e) => { if (e.code === 'ArrowLeft' && player.x > 0) { player.x -= player.speed; } if (e.code === 'ArrowRight' && player.x < canvas.width - player.width) { player.x += player.speed; } if (e.code === 'Space') { player.fire(); }});// 生成敌机function spawnEnemy() { const x = Math.random() * (canvas.width - 50); enemies.push({ x: x, y: -50, width: 50, height: 50, color: '#0000FF', speed: 2 });}// 检测碰撞function checkCollision(rect1, rect2) { return rect1.x < rect2.x + rect2.width && rect1.x + rect1.width > rect2.x && rect1.y < rect2.y + rect2.height && rect1.y + rect1.height > rect2.y;}// 更新游戏状态function update() { // 移动子弹 player.bullets.forEach((bullet, index) => { bullet.y -= 5; if (bullet.y < 0) { player.bullets.splice(index, 1); } }); // 移动敌机 enemies.forEach((enemy, index) => { enemy.y += enemy.speed; if (enemy.y > canvas.height) { enemies.splice(index, 1); } }); // 检测子弹与敌机的碰撞 player.bullets.forEach((bullet, bulletIndex) => { enemies.forEach((enemy, enemyIndex) => { if (checkCollision(bullet, enemy)) { player.bullets.splice(bulletIndex, 1); enemies.splice(enemyIndex, 1); score += 10; } }); }); // 检测玩家与敌机的碰撞 enemies.forEach((enemy, index) => { if (checkCollision(player, enemy)) { alert('游戏结束!得分:' + score); document.location.reload(); } });}// 绘制游戏元素function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); // 绘制玩家飞机 ctx.fillStyle = player.color; ctx.fillRect(player.x, player.y, player.width, player.height); // 绘制子弹 ctx.fillStyle = '#FF0000'; player.bullets.forEach(bullet => { ctx.fillRect(bullet.x, bullet.y, bullet.width, bullet.height); }); // 绘制敌机 ctx.fillStyle = '#0000FF'; enemies.forEach(enemy => { ctx.fillRect(enemy.x, enemy.y, enemy.width, enemy.height); }); // 绘制得分 ctx.fillStyle = '#FFFFFF'; ctx.font = '20px Arial'; ctx.fillText('得分: ' + score, 10, 30);}// 游戏主循环function gameLoop() { update(); draw(); requestAnimationFrame(gameLoop);}// 定时生成敌机setInterval(spawnEnemy, 1000);// 启动游戏gameLoop();
将上述代码保存为一个 .html
文件,然后在浏览器中打开即可运行游戏。你可以使用键盘控制飞机,体验游戏的乐趣!
这个游戏是一个简单的示例,你可以在此基础上进行扩展和优化,例如:
增加敌机类型:添加不同速度和血量的敌机。
添加音效:为子弹发射、击中敌机和游戏结束添加音效。
提升游戏难度:随着时间推移,逐渐增加敌机的生成速度和数量。
添加背景音乐:为游戏增加背景音乐,提升沉浸感。
通过这个简单的飞机游戏项目,你可以学习到如何使用 HTML 和 JavaScript 实现基本的游戏逻辑,包括玩家控制、碰撞检测和动态生成游戏元素。希望这篇文章对你有所帮助,也欢迎大家在评论区分享你的改进和优化建议!
如果你对游戏开发感兴趣,不妨尝试扩展这个项目,或者基于此开发更多有趣的游戏!🚀
飞机游戏