小的时候玩的飞机大战感觉还蛮神奇,今天自己就学着做了一个
先制作好要做好的几步以及背景样式
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var start = 0; // 开始阶段
var starting = 1; // 开始的加载阶段
var running = 2; // 游戏阶段
var pause = 3; // 暂停阶段
var gameover = 4; // 结束阶段
var state = start; // 目前状态
var width = canvas.width; // 获取画布的宽度
var height = canvas.height; // 获取画布的高度
var score = 0; // 分数
var life = 3; // 我放飞机生命值
var bg = new Image(); // 创建背景图片
bg.src = "img/background.png";
var BG = {
imgs: bg,
width: 480,
height: 852,
};
// 创建生成背景图片的构造函数
function Bg(config) {
// 参数为BG对象
this.imgs = config.imgs;
this.width = config.width;
this.height = config.height;
// 定义两张背景图片,用于动画
this.x1 = 0;
this.y1 = 0;
this.x2 = 0;
//第二张背景图的初始高度放在背景高度(固定)的上面
this.y2 = -this.height;
// 背景图片绘制方法
this.paint = function() {
//分别绘制了两张背景图
ctx.drawImage(this.imgs, this.x1, this.y1);
ctx.drawImage(this.imgs, this.x2, this.y2);
};
// 背景图片运动的方法
this.step = function() {
//背景图片位置向下移动一个,然后利用定时器让背景图动起来
this.y1++;
this.y2++;
//判断图片高度的临界点,
if (this.y1 == this.height) {
this.y1 = -this.height;
}
if (this.y2 == this.height) {
this.y2 = -this.height;
}
}
};
// 创建背景图片对象
var sky = new Bg(BG);
// 生成游戏名文字
var logo = new Image();
logo.src = "img/start.png";
// 游戏加载过程的4张图片存入一个数组中
var loadings = [];
loadings[0] = new Image();
loadings[0].src = "img/game_loading1.png";
loadings[1] = new Image();
loadings[1].src = "img/game_loading2.png";
loadings[2] = new Image();
loadings[2].src = "img/game_loading3.png";
loadings[3] = new Image();
loadings[3].src = "img/game_loading4.png";
var LOADING = {
imges: loadings,
length: loadings.length,
width: 186,
height: 38,
};
// 构造函数
function Loading(config) {
this.imges = config.imges;
this.length = config.length;
this.width = config.width;
this.height = config.height;
this.startIndex = 0; // 用于判断需要显示的图片是哪个
// 绘制方法
this.paint = function() {
ctx.drawImage(this.imges[this.startIndex], 0, height - this.height)
};
this.time = 0; // 加载时图片切换速度
// 图片切换方法
this.step = function() {
this.time++;
if (this.time % 4 === 0) {
this.startIndex++;
}
if (this.startIndex === this.length) {
// 加载阶段结束,进入游戏阶段
state = running;
}
}
};
// 创建加载阶段的对象
var loading = new Loading(LOADING);
在制作我方飞机
// 我方飞机
var heros = [];
heros[0] = new Image();
heros[0].src = "img/hero1.png";
heros[1] = new Image();
heros[1].src = "img/hero2.png";
heros[2] = new Image();
heros[