使用HTML5创建射击游戏
时间: 2024-06-09 12:05:12 浏览: 128
基于HTML5的射击类小游戏代码-test2.rar_html5_射击_小游戏
创建射击游戏需要使用HTML5的Canvas元素和JavaScript语言。下面是一个简单的HTML5射击游戏的例子:
HTML代码:
```
<!DOCTYPE html>
<html>
<head>
<title>射击游戏</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="400" height="300"></canvas>
<script src="game.js"></script>
</body>
</html>
```
JavaScript代码:
```
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
// 创建玩家
var player = {
x: canvas.width/2,
y: canvas.height-30,
width: 30,
height: 30,
speed: 3
};
// 创建子弹
var bullet = {
x: 0,
y: 0,
width: 5,
height: 10,
speed: 5
};
// 监听键盘事件
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
var rightPressed = false;
var leftPressed = false;
function keyDownHandler(event) {
if(event.keyCode == 39) {
rightPressed = true;
} else if(event.keyCode == 37) {
leftPressed = true;
}
}
function keyUpHandler(event) {
if(event.keyCode == 39) {
rightPressed = false;
} else if(event.keyCode == 37) {
leftPressed = false;
}
}
// 绘制玩家
function drawPlayer() {
ctx.beginPath();
ctx.rect(player.x, player.y, player.width, player.height);
ctx.fillStyle = "blue";
ctx.fill();
ctx.closePath();
}
// 绘制子弹
function drawBullet() {
ctx.beginPath();
ctx.rect(bullet.x, bullet.y, bullet.width, bullet.height);
ctx.fillStyle = "red";
ctx.fill();
ctx.closePath();
}
// 更新游戏状态
function update() {
if(rightPressed && player.x < canvas.width - player.width) {
player.x += player.speed;
} else if(leftPressed && player.x > 0) {
player.x -= player.speed;
}
if(bullet.y > 0) {
bullet.y -= bullet.speed;
} else {
bullet.x = player.x + player.width/2 - bullet.width/2;
bullet.y = player.y - bullet.height;
}
}
// 游戏循环
function gameLoop() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawPlayer();
drawBullet();
update();
requestAnimationFrame(gameLoop);
}
gameLoop();
```
该游戏中,玩家可以使用左右箭头键移动,按下空格键发射子弹。在游戏循环中,每帧都会调用update函数来更新游戏状态,包括玩家和子弹的位置。使用requestAnimationFrame函数来循环调用gameLoop函数,以达到流畅的游戏效果。
阅读全文