小强的HTML5移动开发之路(8)——坦克大战游戏2
来自:http://blog.csdn.net/cai_xingyun/article/details/48629015
在上一篇文章中我们已经画出了自己的坦克,并且可以控制自己的坦克移动,我们继续接着上一篇来实现我们的坦克大战游戏吧。
一、将JS文件分离出来
使用OO的思想,我们已经对坦克进行了封装,对画坦克也进行了封装,下面我们将这两个对象提取到外部的js文件中,文件内容如下:
- //定义一个Hero类(后面还要改进)
- //x表示坦克的横坐标
- //y表示纵坐标
- //direct表示方向
- function Hero(x,y,direct){
- this.x=x;
- this.y=y;
- this.speed=1;
- this.direct=direct;
- //上移
- this.moveUp=function(){
- this.y-=this.speed;
- this.direct=0;
- }
- //右移
- this.moveRight=function(){
- this.x+=this.speed;
- this.direct=1;
- }
- //下移
- this.moveDown=function(){
- this.y+=this.speed;
- this.direct=2;
- }
- //左移
- this.moveLeft=function(){
- this.x-=this.speed;
- this.direct=3;
- }
- }
- //绘制坦克
- function drawTank(tank){
- //考虑方向
- switch(tank.direct){
- case 0: //向上
- case 2: //向下
- //设置颜色
- cxt.fillStyle="#BA9658";
- //左边的矩形
- cxt.fillRect(tank.x,tank.y,5,30);
- //右边的矩形
- cxt.fillRect(tank.x+17,tank.y,5,30);
- //画中间的矩形
- cxt.fillRect(tank.x+6,tank.y+5,10,20);
- //画出坦克的盖子
- cxt.fillStyle="#FEF26E";
- cxt.arc(tank.x+11,tank.y+15,5,0,Math.PI*2,true);
- cxt.fill();
- //画出炮筒
- cxt.strokeStyle="#FEF26E";
- cxt.lineWidth=1.5;
- cxt.beginPath();
- cxt.moveTo(tank.x+11,tank.y+15);
- if(tank.direct==0){ //只是炮筒的方向不同
- cxt.lineTo(tank.x+11,tank.y);
- }else{
- cxt.lineTo(tank.x+11,tank.y+30);
- }
- cxt.closePath();
- cxt.stroke();
- break;
- case 1:
- case 3:
- //设置颜色
- cxt.fillStyle="#BA9658";
- //上边的矩形
- cxt.fillRect(tank.x-4,tank.y+4,30,5);
- //下边的矩形
- cxt.fillRect(tank.x-4,tank.y+17+4,30,5);
- //画中间的矩形
- cxt.fillRect(tank.x+5-4,tank.y+6+4,20,10);
- //画出坦克的盖子
- cxt.fillStyle="#FEF26E";
- cxt.arc(tank.x+15-4,tank.y+11+4,5,0,Math.PI*2,true);
- cxt.fill();
- //画出炮筒
- cxt.strokeStyle="#FEF26E";
- cxt.lineWidth=1.5;
- cxt.beginPath();
- cxt.moveTo(tank.x+15-4,tank.y+11+4);
- if(tank.direct==1){ //只是炮筒的方向不同
- cxt.lineTo(tank.x+30-4,tank.y+11+4);
- }else{
- cxt.lineTo(tank.x-4,tank.y+11+4);
- }
- cxt.closePath();
- cxt.stroke();
- break;
- }
- }
在上一篇中有一个小问题,感谢;i<3;i++){
;i<3;i++){
运行效果:
既然我们的坦克和敌人的坦克都有了,我们要让他们战斗起来,下一篇我们将让坦克发子弹。
小强的HTML5移动开发之路(8)——坦克大战游戏2的更多相关文章
- 小强的HTML5移动开发之路(18)——HTML5地理定位
来自:http://blog.csdn.net/dawanganban/article/details/18192091 在前面的<小强的HTML5移动开发之路(2)--HTML5的新特性> ...
- 小强的HTML5移动开发之路(14)——Video标签详解
来自:http://blog.csdn.net/dawanganban/article/details/18180605 在前面的小强的HTML5移动开发之路(5)--制作一个漂亮的视频播放器中制作了 ...
- 小强的HTML5移动开发之路(13)——HTML5中的全局属性
来自:http://blog.csdn.net/dawanganban/article/details/18179483 一.accssskey 快捷键 <!DOCTYPE HTML> ...
- 小强的HTML5移动开发之路(11)——链接,图片,表格,框架
来自:http://blog.csdn.net/dawanganban/article/details/18098193 一.HTML是什么? HTML(hypertext mark-uplangua ...
- 小强的HTML5移动开发之路(42)——HTML4与HTML5文档结构比较
一般来说,人们在书写包括HTML在内的文档时,习惯上按照类似于"章--节--小节"这样的层次结构来进行. 在HTML4中的描述方式: <html> <head&g ...
- 小强的HTML5移动开发之路(37)——jqMobi快速入门
在<小强的HTML5移动开发之路(33)-- jqMobi基础>中我们了解了什么是jqMobi,并从官方下载了jqMobi开发包,下载后解压目录如下: 拷贝上面的/css目录./plugi ...
- 小强的HTML5移动开发之路(7)——坦克大战游戏1
来自:http://blog.csdn.net/dawanganban/article/details/17693145 上一篇中我们介绍了关于Canvas的基础知识,用Canvas绘制各种图形和图片 ...
- 小强的HTML5移动开发之路(2)——HTML5的新特性
来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...
- 小强的HTML5移动开发之路(12)——从一个多媒体标签说起
来自:http://blog.csdn.net/dawanganban/article/details/18136813 一.视频播放 <html> <head> <ti ...
- 小强的HTML5移动开发之路(3)——HTML5与HTML4比较
来自:http://blog.csdn.net/dawanganban/article/details/17652873 在前面介绍了HTML5的新特性,新标签的使用,智能表单设计,引入多媒体对象,C ...
随机推荐
- 关于基因组注释文件GTF的解释
GTF文件的全称是gene transfer format,主要是对染色体上的基因进行标注.怎么理解呢,其实所谓的基因名,基因座等,都只是后来人们给一段DNA序列起的名字而已,还原到细胞中就是细胞核里 ...
- PHP echo和print 语句
PHP echo 和 print 语句 在 PHP 中有两个基本的输出方式: echo 和 print. 本章节中我们会详细讨论两个语句的用法,并在实例中演示如何使用 echo 和 print. P ...
- sorted函数返回一个新的列表就安全了吗?
arr=[[1,2,3],[4,2,3],[5,2,3]] x2=sorted(arr) print 'sorted',x2 print '-'*20 for ar in arr: ar.append ...
- Android自动打包工具aapt详解
概念 在Android.mk中有LOCAL_AAPT_FLAGS配置项,在gradle中也有aaptOptions,那么aapt到底是干什么的呢? aapt即Android Asset Packagi ...
- hive数据类型及其数据转换
由于需要使用hive sql进行数据查询,同时涉及多个不同类型的字段的组合,看Hive sql的文档相关和资料才知道,hive是支持大部分基础数据类型之间的相互转换的. 那么,hive本身支持哪些数据 ...
- EBS技术开发之VPD策略
VPD (虚拟专用数据库的简称),主要作用是根据运行环境的上下文,隐式的添加条 件. 好处是在数据库层解决细粒度的角色权限访问,避免在中间层写大量代码:坏处 是数据屏蔽的逻辑太隐蔽了,对于分析查找问题 ...
- 20ViewPager demo1,2:接收ViewPager展示View的使用
Demo1 MainActivity .JAVA package com.qf.day20_viewpager_demo1; import java.util.ArrayList; import ja ...
- 仿qq最新侧滑菜单
为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sungu ...
- UE4成批处理透明材质
项目中需要控制成批的物体的透明度,但是默认的时候他又不能是透明的,对,项目的要求就这么诡异. 然而却没有找到设置材质的BlendMode的功能,于是只有换了一种办法,物体需要透明时更换为透明材质,默认 ...
- iOS7 CookBook精彩瞬间(一)property、selector细节、__unused
1.我们常常使用nonatomic,很多人只知道它的效率较高,却不知道其含义,其含义是非线程安全的,也就是说多线程修改时不加锁,可能出现多个线程先后修改而成为脏数据的情况. 2.unsafe_unre ...