帮我写一个js植物大战
时间: 2023-08-28 17:29:06 浏览: 39
好的,这是一个简单的植物大战游戏,主要使用了JavaScript和HTML5 Canvas。
首先,我们需要创建一个HTML页面,包含一个Canvas元素和一些按钮来控制游戏。然后,我们需要编写JavaScript代码来实现游戏逻辑。下面是一个简单的示例:
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>植物大战僵尸</title>
<style>
canvas {
border: 1px solid #ccc;
}
</style>
</head>
<body>
<canvas id="game" width="800" height="600"></canvas>
<br>
<button id="start-btn">开始游戏</button>
<button id="stop-btn" disabled>停止游戏</button>
<button id="clear-btn">清空画布</button>
<script src="game.js"></script>
</body>
</html>
```
JavaScript代码:
```js
// 获取Canvas元素
var canvas = document.getElementById('game');
// 获取Canvas上下文
var ctx = canvas.getContext('2d');
// 定义游戏状态
var isPlaying = false;
// 定义游戏循环
var timer = null;
// 定义游戏对象
var game = {
// 定义植物和僵尸
plants: [],
zombies: [],
// 初始化游戏
init: function() {
// 添加植物
this.plants.push(new Plant(100, 100));
this.plants.push(new Plant(200, 200));
this.plants.push(new Plant(300, 300));
// 添加僵尸
this.zombies.push(new Zombie(600, 100));
this.zombies.push(new Zombie(500, 200));
this.zombies.push(new Zombie(400, 300));
},
// 渲染游戏
render: function() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制植物
for (var i = 0; i < this.plants.length; i++) {
this.plants[i].render();
}
// 绘制僵尸
for (var i = 0; i < this.zombies.length; i++) {
this.zombies[i].render();
}
},
// 更新游戏
update: function() {
// 更新植物
for (var i = 0; i < this.plants.length; i++) {
this.plants[i].update();
}
// 更新僵尸
for (var i = 0; i < this.zombies.length; i++) {
this.zombies[i].update();
}
},
// 开始游戏
start: function() {
// 初始化游戏
this.init();
// 设置游戏状态为正在进行
isPlaying = true;
// 启动游戏循环
timer = setInterval(function() {
// 更新游戏
game.update();
// 渲染游戏
game.render();
}, 30);
// 禁用开始按钮,启用停止按钮
document.getElementById('start-btn').disabled = true;
document.getElementById('stop-btn').disabled = false;
},
// 停止游戏
stop: function() {
// 清空游戏循环
clearInterval(timer);
timer = null;
// 设置游戏状态为已停止
isPlaying = false;
// 禁用停止按钮,启用开始按钮
document.getElementById('stop-btn').disabled = true;
document.getElementById('start-btn').disabled = false;
},
// 清空画布
clear: function() {
// 清空植物和僵尸
this.plants = [];
this.zombies = [];
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
};
// 定义植物对象
function Plant(x, y) {
this.x = x;
this.y = y;
this.width = 50;
this.height = 50;
}
Plant.prototype.render = function() {
ctx.fillStyle = 'green';
ctx.fillRect(this.x, this.y, this.width, this.height);
};
Plant.prototype.update = function() {
// 植物不需要更新
};
// 定义僵尸对象
function Zombie(x, y) {
this.x = x;
this.y = y;
this.width = 50;
this.height = 50;
}
Zombie.prototype.render = function() {
ctx.fillStyle = 'red';
ctx.fillRect(this.x, this.y, this.width, this.height);
};
Zombie.prototype.update = function() {
// 僵尸不需要更新
};
// 绑定按钮事件
document.getElementById('start-btn').addEventListener('click', function() {
game.start();
});
document.getElementById('stop-btn').addEventListener('click', function() {
game.stop();
});
document.getElementById('clear-btn').addEventListener('click', function() {
game.clear();
});
```
以上代码需要使用服务器环境运行,可以使用npm http-server模块来启动一个简单的本地服务器。
在命令行中运行以下命令安装http-server模块:
```
npm install -g http-server
```
然后在游戏文件夹中运行以下命令来启动本地服务器:
```
http-server
```
然后打开浏览器,访问http://localhost:8080即可开始游戏。