html 游戏键盘,HTML5 键盘监听原理实现的抓怪兽游戏+代码

HTML5小游戏抓怪兽,应用Canvas等超多的HTML5技巧编写而成,下面来向大家汇报实现步骤:

1、创建游戏画布:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

var canvas = document.createElement("canvas");

var ctx = canvas.getContext("2d");

canvas.width = 512;

canvas.height = 480;

document.body.appendChild(canvas);

我们需要做的第一件事是创建一个 canvas元素。我这样做的JavaScript,而不是HTML演示如何轻松完成。一旦我们拥有的元素,我们得到一个参考的情况下,设置它的尺寸,它附加到文档的身体。前端框架分享

2、包括图像:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

var bgReady = false;

var bgImage = new Image();

bgImage.onload = function () {

bgReady = true;

};

bgImage.src = "images/background.png";

我们加载一些图像。我想,以做这个尽可能简单,所以它是只是一个图像,而不是被包裹起来的一个很好的类或东西。 使用bgReady让画布知道,当它的安全来绘制它。

3、 游戏对象:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

var hero = {//英雄

speed: 256, // 每秒256像素

x: 0,

y: 0

};

var monster = {//怪兽

x: 0,

y: 0

};

var monstersCaught = 0; //抓到了几个怪兽

4、 玩家输入:前端框架分享

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

// 处理键盘输入

var keysDown = {};

addEventListener("keydown", function (e) {

keysDown[e.keyCode] = true;

}, false);

addEventListener("keyup", function (e) {

delete keysDown[e.keyCode];

}, false);

5、 新游戏

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

//当怪兽被抓住时,需执行

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、 更新对象:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

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、 渲染对象:前端资源分享

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

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、 游戏主循环:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

var main = function () {

var now = Date.now();

var delta = now - then;

update(delta / 1000);

render();

then = now;

};

9、 开始游戏:

.代码  7a1e7afc0f2addbbdb746966b60e9e4a.png

reset();

var then = Date.now();

setInterval(main, 1);

原文:http://blog.csdn.net/ariss123/article/details/38493953

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值