[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
整体展示:

一、全局变量
/*===================玩家参数==========================*/
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讲(对象的实现及全局变量的定义)的更多相关文章
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)
整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能 ...
- 【知了堂学习笔记】java 自定义异常
java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)
整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...
- [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)
一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第二篇 —— 安装Tomcat&&添加Tomcat到Eclipse
来了来了~~~~~我们的"织女"--Tomcat来了,牛郎们等急了吧!哈哈! 一.安装Tomcat 下载地址:http://tomcat.apache.org/download-7 ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse
一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...
- [知了堂学习笔记]_ajax的两种使用方式
一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都 ...
- 【知了堂学习笔记】java web 简单的登录
最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...
- [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)
一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...
随机推荐
- vue.js使用props在父子组件之间传参
本篇文章是我参考官方文档整理的,供大家参考,高手勿喷! prop 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子 ...
- HDOJ2001-两点坐标的距离
Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2 ...
- 懵懂oracle之存储过程3--JOB详解
在前面学习了存储过程的开发.调试之后,我们现在就需要来使用存储过程了.简单的使用,像上篇<懵懂oracle之存储过程2>中提到的存储过程调用,我们可以将写好的存储过程在另一个PL/SQL块 ...
- 关于canvas画布使用fillRect()时高度出现双倍效果解决办法
当设置canvas的宽度和高度时,只有内嵌css有效,外部css会出现拉伸的情况,例如: <!DOCTYPE html> <html lang="en"> ...
- 用Django做一个省份选择器
做一个省份选择器 使用django做后端, mysql数据库, jQuery 列出结构主要的文件, 其它配置比较简单 models.py 因为所有数据的结构基本一致, 把所有省份, 市和区全部存储一张 ...
- Python爬虫初学(一)—— 爬取段子
最近开始学Python的爬虫,是在这个博客跟着学习的,该博主用的是Python 2.7版本,而我使用的是3.5版本,很多不兼容的地方,不过没关系,自己改改就好了. 我们想针对网站的内容进行筛选,只获取 ...
- 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 ...
- C++ STL vector详解
一.解释: vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越.一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界.而vector正好弥补了这个缺陷,它 ...
- 斗地主[NOIP2015]
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- expdp导出文件,ORA-01555: 快照过旧: 回退段号 716
快照号过旧,回退段号过小,信息如下:ORA-31693: 表数据对象 "CZBSDB"."SMS_RESULT_RECORD" 无法加载/卸载并且被跳过, 错误 ...