下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >移动开发 >HTML5移动开发(8)——坦克大战游戏2

HTML5移动开发(8)——坦克大战游戏2

我爱的人啊~发布于 2016-02-15 11:42查看:1064回复:3

一、将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;    

   }  

     

}  



  在上一篇中有一个小问题,感谢 Mark_Lee的提醒。

//画出坦克的盖子  

cxt.fillStyle="#FEF26E";  

cxt.arc(tank.x+15-4,tank.y+11+4,5,0,360,true);  

cxt.fill();  



收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

共有3条评论

  • 慧星的那一夜
  • MK
  • 药师
  • IT宅男
  • mr jack
  • YUI
  • Mr ken
  • cappuccino
  • 课课家技术团队1
  • 选择版块:

  • 标题:

  • 内容

  • 验证码:

  • 标题:

  • 内容

  • 选择版块:

移动帖子x

移动到: