HTML坦克大战学习02---坦克动起来
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title> </head>
<body onkeydown="getCommand()">
<canvas id="tankMap" width="400px" height="300px" style="background-color: black"></canvas>
<script type="text/javascript"> //得到画布
var canvas1 = document.getElementById("tankMap");
//取得画布画笔对象
var cxt = canvas1.getContext("2d");
//定义一个Hero类
//x表示横坐标,主表示纵坐标
function Hero(x, y, direct, speed) {
this.x = x;
this.y = y;
this.speed = speed;
this.direct = direct; //向上
this.moveUp = function () {
this.y -= this.speed;
}
//向右
this.moveRight = function () {
this.x += this.speed;
}
//向下
this.moveDown = function () {
this.y += this.speed;
}
//向左移
this.moveLeft = function () {
this.x -= this.speed;
} }
//我的坦克 w表示向上,d表示向右 s表示向下 a表示向左 var hero = new Hero(, , , );
//先画出坦克
darwTank(hero); //绘制坦克对象
function darwTank(hero) {
//画出坦克
cxt.fillStyle = "#DED284";
//画出左面
cxt.fillRect(hero.x, hero.y, , );
//画出右边
cxt.fillRect(hero.x + , hero.y, , );
//中间矩形
cxt.fillRect(hero.x + , hero.y + , , );
//画出坦克的盖子
cxt.fillStyle = "#FFD972";
cxt.arc(hero.x + , hero.y + , , , , true);
cxt.fill();
//车出炮线
cxt.strokeStyle = "#FFD972";
cxt.lineWidth = 1.5;
cxt.beginPath(); cxt.moveTo(hero.x + , hero.y + );
cxt.lineTo(hero.x + , hero.y);
cxt.closePath();
cxt.stroke();
} //接收键盘命令
function getCommand() { var code = event.keyCode;
//alert(code);
switch (code) {
case :
hero.moveUp();
break;
case :
hero.moveRight();
break;
case :
hero.moveDown();
break;
case :
hero.moveLeft();
break;
}
cxt.clearRect(, , , );
darwTank(hero);
}
</script>
</body>
</html>


HTML坦克大战学习02---坦克动起来的更多相关文章
- 坦克大战学习笔记-TankWar
最近学习了马士兵老师直播的单机版坦克大战,模仿的做了一个,整理一下思路记录下来,项目git地址:https://github.com/zhuchangli/TankWar/tree/master 视频 ...
- 【 java版坦克大战--事件处理】 坦克动起来了
折腾了这么久,坦克总算能动了.只贴代码编辑不给上首页,花了半个小时的时间写了n多注释. 再顺便把绘图的原理发在这里: 绘图原理 Component类提供了两个和绘图有关的重要方法: ① paint ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
上篇我们完成了地图的信息获取和碰撞检测,这篇我们整合到程序中. 在这之前我们改造一下Tank类,使它更加模块化,共容易理解: 1.改造后的Tank类声明如下: class Tank : public ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTan ...
- HTML坦克大战学习01
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- C# 坦克大战学习总结
1.学会用Resource管理资源 添加资源 在properties下的Resource.resx添加资源 使用资源 工程名.Properties.Resource.资源名 实际本质,是一个流. 2. ...
- Java坦克大战 (七) 之图片版
本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...
- HTML5-坦克大战一完成坦克上下左右移动的功能(一)
坦克大战一完成坦克上下左右移动的功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 阶段学习总结-坦克大战(2D)案例
这是前几天学习的案例,这两天学习了NGUI和UGUI,被UI搞得很烦躁,但是今天还是将前几天学习的坦克大战总结以下.这个游戏是小时候的经典红白机游戏的复刻,见截图: 一.游戏物体 游戏中包含地图元素( ...
随机推荐
- oracle中的一些基本概念
Oracle数据库的物理文件是存储在磁盘上的数据文件.控制文件和日志文件的总称.数据文件和日志文件是数据库中最重要的文件.数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据 ...
- malloc/free 与 new/delete 比较
相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同. malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光 ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- js判断字符串str是否包含字符串substr
js判断字符串str是否包含字符串substr: function addUser(id,realName){ var userids = $("#userids").val(); ...
- javascript页面刷新的一些方法
在使用js刷新页面的时候,有时会遇到表单的重复提交问题 这时就需要一些强制刷新的办法,从网上大概搜了一下,js的刷新方法大致有以下几种, 刷新页面,不提示重新发送: window.location.r ...
- HDU 3435 A new Graph Game(最小费用最大流)&HDU 3488
A new Graph Game Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- JS动态增加删除UL节点LI
JS如何动态增加删除UL节点LI及相关内容. <ul id="ul"> <li id=1>11111111111111111<a href=" ...
- CyclicBarrier分析与实例
一,介绍 CyclicBarrier是一个保持多个线程共享同一个状态的工具类. 也就是说在多线程环境下,能够通过设定某一个状态来达到线程之间的同步.这个类有两个有參构造方法.各自是CyclicBar ...
- SICP-Exercise 1.5
Exercise 1.5. Ben Bitdiddle has invented a test to determine whether the interpreterhe is faced wit ...
- RotateWorldTest对层动作
//创建类的对象,并返回相应类的指针 /** * define a create function for a specific type, such as CCLayer * @__TYPE__ c ...