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

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

1、创建游戏画布:

.代码  

  1. var canvas = document.createElement("canvas");
  2. var ctx = canvas.getContext("2d");
  3. canvas.width = 512;
  4. canvas.height = 480;
  5. document.body.appendChild(canvas);

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

2、包括图像:

.代码  

  1. var bgReady = false;
  2. var bgImage = new Image();
  3. bgImage.onload = function () {
  4. bgReady = true;
  5. };
  6. bgImage.src = "images/background.png";

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

3、 游戏对象:

.代码  

  1. var hero = {//英雄
  2. speed: 256, // 每秒256像素
  3. x: 0,
  4. y: 0
  5. };
  6. var monster = {//怪兽
  7. x: 0,
  8. y: 0
  9. };
  10. var monstersCaught = 0; //抓到了几个怪兽

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

.代码  

  1. // 处理键盘输入
  2. var keysDown = {};
  3. addEventListener("keydown", function (e) {
  4. keysDown[e.keyCode] = true;
  5. }, false);
  6. addEventListener("keyup", function (e) {
  7. delete keysDown[e.keyCode];
  8. }, false);

5、 新游戏

.代码  

  1. //当怪兽被抓住时,需执行
  2. Var  reset = function () {
  3. hero.x = canvas.width / 2;
  4. hero.y = canvas.height / 2;
  5. // 使怪物出现在场景的某个地方(随机化)
  6. monster.x = 32 + (Math.random() * (canvas.width - 64));
  7. monster.y = 32 + (Math.random() * (canvas.height - 64));
  8. };

6、 更新对象:

.代码  

  1. var update = function (modifier)
  2. {
  3. if (38 in keysDown) {   // 向上
  4. hero.y -= hero.speed * modifier;
  5. }
  6. if (40 in keysDown) { // 向下
  7. hero.y += hero.speed * modifier;
  8. }
  9. if (37 in keysDown) { // 向左
  10. hero.x -= hero.speed * modifier;
  11. }
  12. if (39 in keysDown) { //
  13. hero.x += hero.speed * modifier;
  14. }
  15. // Are they touching?
  16. if (
  17. hero.x <= (monster.x + 32)
  18. && monster.x <= (hero.x + 32)
  19. && hero.y <= (monster.y + 32)
  20. && monster.y <= (hero.y + 32)
  21. ) {
  22. ++monstersCaught;
  23. reset();
  24. }
  25. };

7、 渲染对象:前端资源分享

.代码  

  1. var render = function () {
  2. if (bgReady) {
  3. ctx.drawImage(bgImage, 0, 0);
  4. }
  5. if (heroReady) {
  6. ctx.drawImage(heroImage, hero.x, hero.y);
  7. }
  8. if (monsterReady) {
  9. ctx.drawImage(monsterImage, monster.x, monster.y);
  10. }
  11. // Score
  12. ctx.fillStyle = "rgb(250, 250, 250)";
  13. ctx.font = "24px Helvetica";
  14. ctx.textAlign = "left";
  15. ctx.textBaseline = "top";
  16. ctx.fillText("Goblins caught: " + monstersCaught, 32, 32);
  17. };

8、 游戏主循环:

.代码  

  1. var main = function () {
  2. var now = Date.now();
  3. var delta = now - then;
  4. update(delta / 1000);
  5. render();
  6. then = now;
  7. };

9、 开始游戏:

.代码  

  1. reset();
  2. var then = Date.now();
  3. setInterval(main, 1);

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

时间: 2024-11-03 22:30:10

HTML5 键盘监听原理实现的抓怪兽游戏+代码的相关文章

python之键盘监听木马(SMTP信箱收取监听结果、修改注册表自启动)

最近接触了python的win32库,库子提供了不少可用于windows开发的API,这里就利用这个为原理制作一个键盘监听木马的雏形. 这里需要使用额外的模块pythonHook(放置钩子时),pythoncom 主要监听功能相关代码: #放置键盘监听钩子 def seeing(): PH=pyHook.HookManager() PH.KeyDown=KeyboardEvent PH.HookKeyboard() pythoncom.PumpMessages() #键盘事件 def Keybo

C#全局键盘监听(Hook)的使用

一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下快捷键使用此功能... 这个时候在程序中添加键盘监听肯定不能满足需求了,当用户焦点不在App上时(如最小化,或者用户在处理其它事物等等)键盘监听就失效了 二.怎样才能实现全局键盘监听? 这里需要用到Windows API,源码如下:(可以作为一个工具类[KeyboardHook.cs]收藏起来) u

使用HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)

之前发布了一款简易的计算器,今天做了一下修改,添加了键盘监听事件,不用再用鼠标点点点啦 JS代码: var yunSuan = 0;// 运算符号,0-无运算;1-加法;2-减法;3-乘法;4-除法 var change = 0;// 属于运算符后需要清空上一数值 var num1 = 0;// 运算第一个数据 var num2 = 0;// 运算第二个数据 var cunChuValue = 0;// 存储的数值 $(function() { $(".number").click(f

JPanel添加键盘监听事件

因为在自己的游戏需求中谢了要用键盘控制飞机的移动,所以用到键盘监听事件,但是使用了JPanel之后添加了键盘监听事件,按相应的方向键飞机并没有反应.但是如果是为JFrame的内容面板加则会有反应. 为了使得能在JPanel里头使用键盘事件解决方法如下: 1.在JPanel里头添加键盘监听 this.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e) { switch(e.getKeyCode()){ case K

【转】【C#】全局键盘监听

using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; using System.Reflection; namespace 梦琪动漫屋 { /// <summary> /// 键盘钩子/// </summary> class KeyboardHook { public ev

iOS键盘监听以及获取键盘高度

在文本输入时,界面会弹出键盘.有时,当文本输入框过低,被键盘遮挡,使用户无法看见输入框文本内容,这就使得用户体验过低. 所以需要我们对键盘进行监控并获取键盘高度,调节界面或文本框高度进行处理.如下图,文本输入框过低的情况: 像这样的情况,如若未作处理,输入框就会被键盘遮挡.这时,我们需要监听键盘事件,获取键盘高度,对文本框视图进行高度调整: 1 #import "ViewController.h" 2 3 @interface ViewController ()<UITextFi

Android之键盘监听的运行机理【看清键盘监听的本质】【入门版】

以EditText为例: 1.Activity本身也有按键监听 editText按键监听与Activity按键监听关系: Activity本身也有按键监听 而且分按下和松开两个事件监听 editText按键监听不分按下,和松开,准确的说:它把这两个事件放在了一个监听事件里了 return false ,editText按键监听事件执行完之后,会向下传第,即接着执行Activity的按键监听 return true :终止向下传递,不会执行Activity的按键监听 2.软键盘不能响应按键监听(只

Android之如何设置键盘监听

5.设置键盘监听[以EditText为例] username.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_1: Toast.makeText(MainActivity.thi

Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法

Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法 首先,在Scene中重载下面两个函数 [cpp] view plaincopy virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event); virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event); 第一个函数在按下时触发,第二个函数在松开是触发. 然