按上下左右键,或触摸方式,控制植物战士消灭僵尸。

在电脑、手机、平板上都可以玩。

<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
<body><div id="info">ttt</div>
<script>var info = document.getElementById("info");info.innerHTML = window.screen.width+","+window.screen.height;var canvas = document.createElement("canvas");var ctx = canvas.getContext("2d");canvas.width = window.screen.width-20;canvas.height = window.screen.height-200;document.body.appendChild(canvas);var hero = {ready : false,speed: 100, // 每秒移动的像素x: 0,y: 0,w:80,h:80,oldx: 0,oldy: 0};var monster = {ready : false,isDrawed: false,x: 0,y: 0,w:45,h:45};var heroImage = new Image();heroImage.src = "wandou.jpg";heroImage.onload = function () {hero.ready = true;};var monsterImage = new Image();monsterImage.src = "jiangshi.jpg";monsterImage.onload = function () {monster.ready = true;};// 处理按键var keysDown = {};addEventListener("keydown", function (e) {keysDown[e.keyCode] = true;}, false);addEventListener("keyup", function (e) {delete keysDown[e.keyCode];}, false);document.addEventListener('touchstart',touch, false);document.addEventListener('touchmove',touch, false);document.addEventListener('touchend',touch, false);var touchX=0,touchY=0;function touch (event){var event = event || window.event;switch(event.type){case "touchstart":touchX=event.touches[0].clientX;touchY=event.touches[0].clientY;info.innerHTML = "Touch started (" + Math.round(touchX) + "," + Math.round(touchY) + ")";break;case "touchend":delete keysDown[37];delete keysDown[38];delete keysDown[39];delete keysDown[40];
info.innerHTML = "Touch end (" + Math.round(event.changedTouches[0].clientX) + "," + Math.round(event.changedTouches[0].clientY) + ")";break;case "touchmove":event.preventDefault();delete keysDown[37];delete keysDown[38];delete keysDown[39];delete keysDown[40];if(event.touches[0].clientX > touchX){keysDown[39] = true;// 用户按的是→}if(event.touches[0].clientX < touchX){keysDown[37] = true;// 用户按的是→}if(event.touches[0].clientY > touchY){keysDown[40] = true;// 用户按的是↓}if(event.touches[0].clientY < touchY){keysDown[38] = true;// 用户按的是↑}touchX=event.touches[0].clientX;touchY=event.touches[0].clientY;info.innerHTML = "Touch moved (" + Math.round(touchX) + "," + Math.round(touchY) + ")";               break;}  }// 更新游戏对象的属性var count = 0var 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;}if(hero.x < 0) hero.x=0;if(hero.x > canvas.width - hero.w)  hero.x = canvas.width - hero.wif(hero.y < 0) hero.y=0;if(hero.y > canvas.height - hero.h)  hero.y = canvas.height - hero.hif(count++%100==0){monster.x = 32 + (Math.random() * (canvas.width - 64));monster.y = 32 + (Math.random() * (canvas.height - 64));monster.isDrawed=false;console.log(count,hero)if(count>40*100){monster.ready = false}}};// 画出所有物体var render = function () {if (hero.ready) {ctx.clearRect(hero.oldx, hero.oldy, hero.w,hero.h);ctx.drawImage(heroImage, hero.x, hero.y, hero.w,hero.h);hero.oldx = hero.x; hero.oldy = hero.y;}if (monster.ready && !monster.isDrawed) {ctx.drawImage(monsterImage, monster.x, monster.y,monster.w,monster.h);monster.isDrawed = true;}};// 游戏主函数var main = function () {var now = Date.now();var delta = now - then;update(delta / 1000);render();then = now;// 立即调用主函数requestAnimationFrame(main);};// 少年,开始游戏吧!var then = Date.now();main();
</script>
</body>
</html>

给小朋友做的一个很简单的游戏相关推荐

  1. 一个很简单的基于栈式过程虚拟机的实现,它运行目标平台【x86】的原生代码。

    本文提供的 "栈式过程虚拟机" 的实现,挂在本人的 github 上面,对想要深入了解 "栈式过程虚拟机" 的人,它或许可以起到一个不错的作用,但是本人建议一般 ...

  2. python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据

    我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...

  3. 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧

    一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF 转载于:https://www.cnblogs.com/devgis/p/ ...

  4. 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF

    一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF

  5. html案例:模拟一个很简单的聊天框

    html案例:模拟一个很简单的聊天框 实现的代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "htt ...

  6. 做了一个仿吃鸡游戏,可多人联网,算是学习总结。

    网上偶见UNITY,很有兴趣于是自学了一段时间,这是我做的一个仿吃鸡游戏DEMO,虽然只是抱着学习实践的很低要求,但从代码.模型.美工.场景都要自己做,繁杂超过了我的预估.对次时代游戏有兴趣可加我qq ...

  7. 用原生javascript做的一个打地鼠的小游戏

    学习javascript也有一段时间了,一直以来分享的都是一些概念型的知识,今天有空做了一个打地鼠的小游戏,来跟大家分享一下,大家也可以下载来增加一些生活的乐趣,下面P出代码:首先是HTML部分代码: ...

  8. 用html5做了一个打气球小游戏

    最近初试html5,用canvas和audio做了一个打气球小游戏. demo放在SAE,网址是:[url]http://auzll.sinaapp.com/balloon/[/url] 效果如下: ...

  9. 京东2016实习题目-选举游戏-小东和其他小朋友正在玩一个关于选举的游戏。选举是通过投票的方式进行的,得票最多的人将获胜。

    编程1 -- 选举游戏 题目 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Prob ...

最新文章

  1. Registry仓库Harbor的部署与简介
  2. Servlet开发配置
  3. 元素垂直水平居中布局
  4. Intel MKL 多线程设置
  5. 传感器为什么在低量程偏差大_传感器作业
  6. matlab如何保存子图,MATLAB:在子图中绘制/保存网格函数的X-Y视图
  7. react环境搭建(-)
  8. pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比;nn.functional.max_pool1d
  9. 我用 Python 抓取了 7000 多本电子书
  10. Arduino连接超声波传感器测距
  11. 山东大学软件学院计算机组成原理2021-2022期末考试回忆版
  12. office2019选框虚线_手把手教你分析PS2019里怎么画虚线
  13. 国外的一些开源网站汇集以及优秀博客的博客
  14. 虚拟机的服务器管理器怎么打开,虚拟机启动任务管理器
  15. 日渐临近的苹果秋季发布会,iOS 11 GM 固件到底提前泄露了哪些秘密?
  16. 计蒜客 - 蒜头君的任务
  17. JavaScript专题(一)变量提升与预编译,一起去发现Js华丽的暗箱操作
  18. 微信公众号-消息推送
  19. 怎么设计高效的敏感词过滤系统(一)
  20. 2022(秋)工程伦理答案 第一章

热门文章

  1. 利用计算机求该货车,汽车理论习题 - 图文
  2. 算法的力量(转李开复)
  3. 矩形脉冲信号的频域分析_周期矩形脉冲信号的分析
  4. 二叉排序树的构造及其基本操作
  5. alway in my heart
  6. 考研复试-操作系统面试题
  7. pic单片机c语言乘除法,PIC单片机C语言编程教程(1)
  8. 【Java基础查缺补漏】
  9. 处理A4不能打印大图片
  10. 施密特正交化及QR分解(附实现代码)