HTML5 键盘监听原理实现的抓怪兽游戏+代码
HTML5小游戏抓怪兽,应用Canvas等超多的HTML5技巧编写而成,下面来向大家汇报实现步骤:
1、创建游戏画布:
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);我们需要做的第一件事是创建一个 canvas元素。我这样做的JavaScript,而不是HTML演示如何轻松完成。一旦我们拥有的元素,我们得到一个参考的情况下,设置它的尺寸,它附加到文档的身体。前端框架分享
2、包括图像:
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function () {
bgReady = true;
};
bgImage.src = "images/background.png";我们加载一些图像。我想,以做这个尽可能简单,所以它是只是一个图像,而不是被包裹起来的一个很好的类或东西。 使用bgReady让画布知道,当它的安全来绘制它。
3、 游戏对象:
var hero = {//英雄
speed: 256, // 每秒256像素
x: 0,
y: 0
};
var monster = {//怪兽
x: 0,
y: 0
};
var monstersCaught = 0; //抓到了几个怪兽4、 玩家输入:前端框架分享
// 处理键盘输入
var keysDown = {};
addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);5、 新游戏
//当怪兽被抓住时,需执行
Var reset = function () {
hero.x = canvas.width / 2;
hero.y = canvas.height / 2;
// 使怪物出现在场景的某个地方(随机化)
monster.x = 32 + (Math.random() * (canvas.width - 64));
monster.y = 32 + (Math.random() * (canvas.height - 64));
};6、 更新对象:
var update = function (modifier)
{
if (38 in keysDown) { // 向上
hero.y -= hero.speed * modifier;
}
if (40 in keysDown) { // 向下
hero.y += hero.speed * modifier;
}
if (37 in keysDown) { // 向左
hero.x -= hero.speed * modifier;
}
if (39 in keysDown) { //
hero.x += hero.speed * modifier;
}
// Are they touching?
if (
hero.x <= (monster.x + 32)
&& monster.x <= (hero.x + 32)
&& hero.y <= (monster.y + 32)
&& monster.y <= (hero.y + 32)
) {
++monstersCaught;
reset();
}
};7、 渲染对象:前端资源分享
var render = function () {
if (bgReady) {
ctx.drawImage(bgImage, 0, 0);
}
if (heroReady) {
ctx.drawImage(heroImage, hero.x, hero.y);
}
if (monsterReady) {
ctx.drawImage(monsterImage, monster.x, monster.y);
}
// Score
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "24px Helvetica";
ctx.textAlign = "left";
ctx.textBaseline = "top";
ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
};8、 游戏主循环:
var main = function () {
var now = Date.now();
var delta = now - then;
update(delta / 1000);
render();
then = now;
};9、 开始游戏:
reset(); var then = Date.now(); setInterval(main, 1);
相关推荐
nercon 2020-03-06
zsh 2020-03-01
wusiye 2020-10-23
表格的现在还是较为常用的一种标签,但不是用来布局,常见处理、显示表格式数据。在HTML网页中,要想创建表格,就需要使用表格相关的标签。<table> <tr> <td>单元格内的文字</td> ...
gufudhn 2020-08-09
nercon 2020-08-01
swiftwwj 2020-07-21
nercon 2020-07-16
饮马天涯 2020-07-05
Lophole 2020-06-28
gufudhn 2020-06-12
csstpeixun 2020-06-11
huzijia 2020-06-09
WebVincent 2020-06-06
行吟阁 2020-05-30
qsdnet我想学编程 2020-05-26
gufudhn 2020-05-25
qsdnet我想学编程 2020-05-19
suixinsuoyu 2020-05-15