整体展示:

一、全局变量

/*===================玩家参数==========================*/
var myPlane; //英雄对象
var leftbtn = false; //左移动标志
var rightbtn = false; //右移动标志
var topbtn = false; //上移动标志
var bottombtn = false; //下移动标志
var shot = false; //射击标志
//var bulletStatus = false; //子弹
var score = 0; //得分
var killNum = 0; //杀敌数
var shotboom = false; //必杀标志
var pass = 1;//关卡
var mainobj = document.getElementById("main"); //获取游戏div元素
/*===================集合==========================*/
var bulletList = new Array(); //英雄子弹集合
var boomList = new Array(); //必杀集合
var boosList = new Array(); //boos集合
var enemyList = new Array(); //敌机集合
var boosBullet = new Array(); //boos子弹集合
var toolList = new Array(); //道具集合
/*====================计时器=========================*/
var ctrlmove; //英雄移动计时器
var ctrlshot; //英雄射击计时器
var bulletfly; //子弹移动计时器
var createenemy; //敌机生成计时器
var enemymove; //敌机移动计时器
var hitplane; //击中判断计时器
var exist; //判断对象存在与否计时器

二、飞机对象

/**
* 飞机对象
* @param {Object} src 飞机图片路径
* @param {Object} x x坐标
* @param {Object} y y坐标
* @param {Object} speed 飞机移动速度
* @param {Object} blood 飞机血量
*/
function createPlane(src, x, y, speed, blood) {
this.planeNode = document.createElement("img"); //飞机图片节点,用于主界面中显示
this.src = src;
this.x = x;
this.y = y;
this.speed = speed;
this.blood = blood;
this.level = 1; //等级
this.boom = 5; //必杀数量
//飞机左移动,需要判断是否飞出主界面左侧,如果移出,则从右边出现
this.leftMove = function() {
if (this.planeNode.style.left == "-60px")
this.planeNode.style.left = "440px";
else {
this.planeNode.style.left=parseInt(this.planeNode.style.left) - this.speed +"px";
}
};
//飞机右移动,需要判断是否飞出界面,飞出则从左边出现
this.rightMove = function() {
if (this.planeNode.style.left == "440px"){
this.planeNode.style.left = "-60px";
}
else {
this.planeNode.style.left=parseInt(this.planeNode.style.left) + this.speed +"px";
}
};
//飞机上移动,当移动到一定值时则不能移动
this.topMove = function() {
if (this.planeNode.style.top == "-10px"){ }
else {
this.planeNode.style.top=parseInt(this.planeNode.style.top) - this.speed +"px";
}
};
//飞机下移动,当移动到一定值时,则不能移动
this.botoomMove = function() {
if (this.planeNode.style.top == "600px"){ }
else {
this.planeNode.style.top=parseInt(this.planeNode.style.top) + this.speed +"px";
}
}; //在页面上创建飞机,设置css属性
this.create = function() {
this.planeNode.src = this.src;
this.planeNode.style.position = "absolute";
this.planeNode.style.left = this.x + "px";
this.planeNode.style.top = this.y + "px";
this.planeNode.style.zIndex = 6;
mainobj.appendChild(this.planeNode);//在游戏界面中添加飞机节点并显示
};
//发射子弹
this.shot = function(){
var bullet1 = new createBullet("img/img_bullet.png",parseInt(this.planeNode.style.left),parseInt(this.planeNode.style.top),this.speed);
bulletList.push(bullet1);
var bullet2 = new createBullet("img/img_bullet.png",parseInt(this.planeNode.style.left)+50,parseInt(this.planeNode.style.top),this.speed);
bulletList.push(bullet2);
}
//释放必杀
this.shotBoom=function(){
if(this.boom>0){
var boom1 = new createBullet("img/daodan1.png",parseInt(this.planeNode.style.left)+20,parseInt(this.planeNode.style.top),this.speed);
boomList.push(boom1);
this.boom--;
}
} this.create();
}

三、敌机对象

/**
* 敌人飞机对象
* @param {Object} src
* @param {Object} x
* @param {Object} y
* @param {Object} speed
* @param {Object} blood
*/
function createEnemyPlane(src,x,y,speed,blood){
this.src = src;
this.x = x;
this.y = y;
this.blood = blood;
this.speed = speed;
this.isdead = false; //是否死亡
this.deadtime = 10; //移除时间(计时器时间*10),用于爆炸效果
this.enemyNode = document.createElement("img"); this.create = function(){
this.enemyNode.src = this.src;
this.enemyNode.style.position = "absolute";
this.enemyNode.style.left = this.x +"px";
this.enemyNode.style.top = this.y+"px";
this.enemyNode.style.zIndex = 6;
mainobj.appendChild(this.enemyNode);
}; this.move = function(){
this.enemyNode.style.top=parseInt(this.enemyNode.style.top) + this.speed +"px";
}; this.rightMove=function(){
this.enemyNode.style.left=parseInt(this.enemyNode.style.left) + this.speed +"px";
}; this.leftMove=function(){
this.enemyNode.style.left=parseInt(this.enemyNode.style.left) - this.speed +"px";
}; this.shot=function(){ };
/**
* boos射击
* 很据英雄的level不同,boos的子弹不同
*/
this.boosShot=function(){
if(myPlane.level==1){
var bullet = new createBullet("img/wp2.png",parseInt(this.enemyNode.style.left)+22,parseInt(this.enemyNode.style.top),this.speed);
boosBullet.push(bullet);
}
if(myPlane.level==3){
var bullet = new createBullet("img/wp3.png",parseInt(this.enemyNode.style.left)+26,parseInt(this.enemyNode.style.top),this.speed);
boosBullet.push(bullet);
}
};
this.create(); }

四、子弹对象

/**
* 子弹对象
* @param {Object} src
* @param {Object} x
* @param {Object} y
* @param {Object} speed
*/
function createBullet(src,x,y,speed){
this.src = src;
this.x = x;
this.y = y;
this.speed = speed;
this.ishit = false; //子弹是否击中
this.boomStop = 50; //必杀移动时间
this.boomTime = 100; //必杀移除时间
this.bulletNode = document.createElement("img"); this.create = function(){
this.bulletNode.src = src;
this.bulletNode.style.position = "absolute";
this.bulletNode.style.left = this.x+"px";
this.bulletNode.style.top = this.y + "px";
this.bulletNode.style.zIndex = 6;
mainobj.appendChild(this.bulletNode);
}; this.move = function(){
this.bulletNode.style.top = parseInt(this.bulletNode.style.top)-this.speed +"px";
}; this.downMove=function(){
this.bulletNode.style.top = parseInt(this.bulletNode.style.top)+this.speed +"px";
}
this.create();
}

五、道具对象

function createTool(src,x,y,speed,tooltype){
this.src = src;
this.x = x;
this.y = y;
this.speed = speed;
this.getme = false;
this.tooltype = tooltype;//道具类型 1为加boom 2为加血,
this.toolNode = document.createElement("img"); this.create=function(){
this.toolNode.src=this.src;
this.toolNode.style.top=this.y+"px";
this.toolNode.style.left=this.x+"px";
this.toolNode.style.position="absolute";
this.toolNode.style.zIndex=6;
mainobj.appendChild(this.toolNode);
} this.move=function(){
this.toolNode.style.top=parseInt(this.toolNode.style.top) + this.speed +"px";
}
this.create();
}

其实在这些对象中,很多代码都是类似的,只要能实现一个对象,在仔细想一想其他对象的特性,结合下代码很快能实现。

 下一讲,则会实现各种处理方法了,让游戏活起来。

以上为今天的第一讲,如需了解更加深入的知识,请大家进入知了堂社区:http://www.zhiliaotang.com/portal.php

[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)的更多相关文章

  1. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

    整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能 ...

  2. 【知了堂学习笔记】java 自定义异常

    java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...

  3. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)

    整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...

  4. [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)

    一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...

  5. [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse

    来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...

  6. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse

    一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...

  7. [知了堂学习笔记]_ajax的两种使用方式

    一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都 ...

  8. 【知了堂学习笔记】java web 简单的登录

    最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...

  9. [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)

    一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...

随机推荐

  1. vue.js使用props在父子组件之间传参

    本篇文章是我参考官方文档整理的,供大家参考,高手勿喷! prop 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子 ...

  2. HDOJ2001-两点坐标的距离

    Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离.   Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2 ...

  3. 懵懂oracle之存储过程3--JOB详解

    在前面学习了存储过程的开发.调试之后,我们现在就需要来使用存储过程了.简单的使用,像上篇<懵懂oracle之存储过程2>中提到的存储过程调用,我们可以将写好的存储过程在另一个PL/SQL块 ...

  4. 关于canvas画布使用fillRect()时高度出现双倍效果解决办法

    当设置canvas的宽度和高度时,只有内嵌css有效,外部css会出现拉伸的情况,例如: <!DOCTYPE html> <html lang="en"> ...

  5. 用Django做一个省份选择器

    做一个省份选择器 使用django做后端, mysql数据库, jQuery 列出结构主要的文件, 其它配置比较简单 models.py 因为所有数据的结构基本一致, 把所有省份, 市和区全部存储一张 ...

  6. Python爬虫初学(一)—— 爬取段子

    最近开始学Python的爬虫,是在这个博客跟着学习的,该博主用的是Python 2.7版本,而我使用的是3.5版本,很多不兼容的地方,不过没关系,自己改改就好了. 我们想针对网站的内容进行筛选,只获取 ...

  7. 35. leetcode 501. Find Mode in Binary Search Tree

    501. Find Mode in Binary Search Tree Given a binary search tree (BST) with duplicates, find all the  ...

  8. C++ STL vector详解

    一.解释:  vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越.一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界.而vector正好弥补了这个缺陷,它 ...

  9. 斗地主[NOIP2015]

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  10. expdp导出文件,ORA-01555: 快照过旧: 回退段号 716

    快照号过旧,回退段号过小,信息如下:ORA-31693: 表数据对象 "CZBSDB"."SMS_RESULT_RECORD" 无法加载/卸载并且被跳过, 错误 ...