6.2.6 游戏的初始化程序
至此,敌人部分基本上讲完,下面讲讲游戏的初始化。也许大家会问,怎么,游戏快讲完了才讲初始化啊,游戏初始化不是应该在游戏一开始就对各种物体、目标、声音效果、得分进行初始设置吗,为什么不在本章的前面部分讲啊?其实道理很简单,这么复杂的游戏,如果一开始就讲初始化,读者根本就不知这些初始化语句有何用处。还不如等游戏的具体内容讲得差不多了再列出初始化程序,这样会更加容易理解这些代码的实际含义。具体程序如下:
//设置是否为不死版
nodead = false;
//我的得分
your_score = 0;
//游戏正式开始设置游戏画面的长宽,还有我的飞机数
play_width = 300;
play_height = 400;
//设置飞船移动的4个边界
play_left = 5;
play_right = 295;
play_top = 25;
play_bottom = 395;
my_plane_number = 3;
for (i=5;i>=my_plane_number;i--) {
eval("my_plane_num_"+i)._visible = false;
}
//设置复制的影片数组
play_plane = new Array();
//我的生命值为50
my_blood = 50;
//我的射击声音
my_shot = new Sound();
my_shot.attachSound("my_plane_shot");
//背景循环音乐的声音
bgsound = new Sound();
bgsound.attachSound("loop");
bgsound.setVolume(80);
//得到令牌的声音
get_pai = new Sound();
get_pai.attachSound("get");
//我死的声音
my_dead = new Sound();
my_dead.attachSound("dead");
//大怪发出一个子弹的声音
big_enemy_one_sound = new Sound();
big_enemy_one_sound.attachSound("one_sound");
//大怪发出爆炸弹的声音
//big_enemy_bomb_bullet_sound = new Sound();
//big_enemy_bomb_bullet_sound.attachSound("bomb_bullet_sound");
//用数组存放3个函数值,精确到小数点后3位
rad = Math.PI/180;
cs = new Array(360);
sn = new Array(360);
for (i=0; i<=359; i++) {
cs[i] = Math.floor(Math.cos(i*rad)*1000)/1000;
sn[i] = Math.floor(Math.sin(i*rad)*1000)/1000;
}
attachMovie("my_plane_bullet", "bullet", 1);
bullet._visible = false;
bullet_width = bullet._width;
bullet_height = bullet._height;
// 子弹的数目
powder = new Array(1,2,3,4);
max_bullet_powder = new Array(11,24,30,40,55);
bullet_level = 1;
my_powder = powder[0];
//max_bullet_num = max_bullet_powder[0]
max_bullet_num = 18;
// 子弹的层数,[1]用来表示我的子弹数,[4]用来表示敌人的散弹数
//[6]表示令牌数开始,[7]表示固定敌人发射的会跟踪的子弹开始位置。[8],[9]之间表示大怪的子弹数
//[11]表示,[13],[14]
deplicate = new Array(1,max_bullet_num,150,180,301,500,501,550,1800,1900, 2000,2100,2500,3000,3500);
// 子弹的X间距
bullet_x_between = 8;
// 子弹的Y间距
bullet_y_between = bullet_height+5;
//令牌的当前数
last_pai=0;
//固定智能敌人子弹数
ai_enemy_bullet = 0;
shot_lock = false;
now_bullet = 0;
my_plane._y = play_height - my_plane._height;
my_plane._x = play_width >>1;
bullet_angle = 90;
//散弹的子弹间隔角度与间距
angle_between = 20;
enemy_bullet_x_between = 20;
//敌人散弹每次发射的子弹数
enemy_powder = 3;
至此,游戏前台的主要驱动部分已经讲述完毕了,下面将讲述游戏如何与后台程序进行通信。

收藏到QQ书签