<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>飞机大战</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="400" height="600"></canvas>
<script>
// 获取画布和上下文
var canvas = document.getElementById("gameCanvas");
var ctx = canvas.getContext("2d");
// 定义游戏状态
var score = 0;
var gameOver = false;
// 定义玩家飞机
var player = {
x: canvas.width / 2,
y: canvas.height - 50,
width: 50,
height: 50,
speed: 5,
bullets: []
};
// 定义敌机
var enemies = [];
// 定义键盘事件监听器
document.addEventListener("keydown", function(event) {
if (event.key === "ArrowLeft") {
player.x -= player.speed;
} else if (event.key === "ArrowRight") {
player.x += player.speed;
} else if (event.key === " ") {
player.bullets.push({
x: player.x + player.width / 2,
y: player.y,
width: 5,
height: 10,
speed: 10
});
}
});
// 定义游戏循环
function gameLoop() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制玩家飞机
ctx.fillStyle = "blue";
ctx.fillRect(player.x, player.y, player.width, player.height);
// 绘制玩家子弹
ctx.fillStyle = "red";
player.bullets.forEach(function(bullet) {
ctx.fillRect(bullet.x, bullet.y, bullet.width, bullet.height);
bullet.y -= bullet.speed;
});
// 绘制敌机
ctx.fillStyle = "green";
enemies.forEach(function(enemy) {
ctx.fillRect(enemy.x, enemy.y, enemy.width, enemy.height);
enemy.y += enemy.speed;
});
// 检测碰撞
player.bullets.forEach(function(bullet) {
enemies.forEach(function(enemy, index) {
if (bullet.x < enemy.x + enemy.width &&
bullet.x + bullet.width > enemy.x &&
bullet.y < enemy.y + enemy.height &&
bullet.y + bullet.height > enemy.y) {
player.bullets.splice(player.bullets.indexOf(bullet), 1);
enemies.splice(index, 1);
score += 10;
}
});
});
enemies.forEach(function(enemy) {
if (enemy.x < player.x + player.width &&
enemy.x + enemy.width > player.x &&
enemy.y < player.y + player.height &&
enemy.y + enemy.height > player.y) {
gameOver = true;
}
});
// 更新分数
ctx.fillStyle = "black";
ctx.font = "20px Arial";
ctx.fillText("Score: " + score, 10, 30);
// 更新游戏状态
if (!gameOver) {
window.requestAnimationFrame(gameLoop);
} else {
ctx.fillText("Game Over", canvas.width / 2 - 50, canvas.height / 2);
}
}
// 初始化敌机
setInterval(function() {
enemies.push({
x: Math.random() * (canvas.width - 50),
y: -50,
width: 50,
height: 50,
speed: Math.random() * 5 + 1
});
}, 1000);
// 启动游戏循环
gameLoop();
</script>
</body>
</html>
javascipt/H5飞机大战
需积分: 9 149 浏览量
2023-04-15
21:23:25
上传
评论
收藏 1KB RAR 举报
tiger-doo
- 粉丝: 4
- 资源: 3
最新资源
- XILINXFPGA源码Xilinxspratan3xcs100E(VGAPS2)
- XILINXFPGA源码XilinxSPARTAN-3E入门开发板实例
- XILINXFPGA源码XilinxSdramVerilog和VHDL版本文档
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云(大赛作品,文档齐全,可直接运行)(文档加Matlab源码)
- XILINXFPGA源码XilinxISE9.xFPGACPLD设计源码
- 成都市地图含高新区(高新南区,高新西区),天府新区,东部新区虚拟行政区划
- XILINXFPGA源码XilinxEDK设计试验
- XILINXFPGA源码XilinxEDKMicroBlaze内置USB固件程序
- 基于 django 的视频点播后台管理系统源代码+数据库
- 基于Java的网上医院预约挂号系统的设计与实现(部署视频)-kaic.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈