首页 > 代码库 > javascript 面向对象制作坦克大战 (一)

javascript 面向对象制作坦克大战 (一)

 

  PS:这个坦克大战是在网上下的一段源码之后,自己进行的重写。   写这个的目的是为了巩固自己这段时间对js的学习。整理到博客上,算是对自己近端时间学习js的一个整理。 同时也希望可以帮助到学习js的园友。由于自己也是刚学js不久,所以难免出现错误。如果发现希望给予指正。   这个教程适合熟悉js基本语法和面向对象语法的园友学习。 本身没有太难的东西,这个案例将js面向对象用的比较好,可以作为js面向对象的入门教程。

1.   创建基本对象,实现坦克简单的移动。

1.1    如何在地图中绘制画布?

    考虑到浏览器兼容的问题,我们用操作dom的方式来实现游戏对象的绘制和刷新。我们如何存储我们的地图呢? 我们应该把地图用一个二维数组来保存, js中没有二维数组,但是可以通过在一维数组从存储数组来实现。

1.2    代码实现

    我们将画布设计为 13 * 13 的一个二维数组,每个元素在地图中对应的长和宽均为40px,可以把整个地图看成由 40px*40p x大小的单元格组成的一个表格,那么我们整个画布的大小为 520px  *  520px ;
   上代码前先给大家来一张对象关系图:
技术分享

1.2.1    创建顶级对象

html代码:
 
技术分享 View Code

 

 

TankObject.js文件:
 
技术分享 View Code

 

 
    这里?我们用X,Y坐标表示对象在地图上的位置。后面我们会将地图中的每个对象都放入二维数组中,这时可以通过X,Y坐标来取得对应的对象。
    然后用css中的left和top来控制我们对象在窗体中的位置。(可以移动的对象:坦克,子弹)
 

1.2.2   创建公用对象

    我们还需要创建一个公共的对象,来写入我们常用的一些方法。
 
Common.js:
 
技术分享 View Code

  

1.2.3    创建移动对象

 
 
Mover.js
 
技术分享 View Code

 

    这里的移动对象继承自我们的顶级对象 ,这里this就代表调用Move方法的对象。
    Move对象的功能根据对象的方向和速度进行移动,每次移动5px总共移动40px一个单元格。后面这个对象还会进行扩展,会加入碰撞检测等功能。
 

1.2.4    创建坦克对象

 
 
Tank.js 文件:
 
技术分享 View Code

 

     现在只创建了玩家坦克,后面我们还会往里添加敌人坦克。
 
 

1.2.5    创建游戏装载对象(核心)

技术分享 View Code

 

    游戏装载对象代码看起来很多,其实就做了两件事情:
        1、创建玩家坦克对象。
        2、添加按键监听事件,当玩家按下移动键调用坦克Move方法移动坦克。
 
  总结:到这里我们的坦克可以通过按键自由的移动了。下一步我们需要完善地图和碰撞检测。

javascript 面向对象制作坦克大战 (一)