📄 all.h
字号:
//游戏状态
#define GAME_STATE_INIT 0 //游戏初始化
#define GAME_STATE_RESTART 1 //重新开始游戏
#define GAME_STATE_MENU 2 //游戏菜单
#define GAME_STATE_RUNNING 3 //游戏开始
#define GAME_STATE_EXIT 4 //退出
/////////////////////////////////////////////////
//玩家的状态 这里可能还要定义其他游戏对象的状态。
#define DEAD 0 //游戏对象状态死的
#define ALIVE 1 //游戏对象状态活的
#define DYING 2 //玩家专用 将死了
#define CHONGSHENG 3 //玩家专用 重生
/////////////////////////////////////////////////////
//////定义各种量
#define MAX_NUM_BLUE 10 //最大兰色飞机数
#define MAX_NUM_MYZIDAN 100
//最大玩家子弹数
#define MAX_NUM_DAODAN 8 //最大导弹数
#define MAX_NUM_YELLOW 12 //最大黄色飞机数
#define MAX_NUM_WEIXING 4 //最大卫星数
#define MAX_NUM_ENEMYZIDAN 100 //最大敌人子弹数
#define MAX_NUM_BAOWU 3 //最大宝物数
#define Rate 5 //导弹跟踪玩家的快慢
#define MAX_DAODAN_SPEED 20 //导弹跟踪的最快速度的平方
#define VIDEOTIME 8100
#define Myzidan_speed_y -12 //完家的子弹速度 y轴
/////////////////////////////////////////////////////////////////////////////////
//定义黄色飞机的各种方向
#define GO_0 0
#define GO_1 1
#define GO_2 2
#define GO_3 3
#define GO_4 4
#define GO_5 5
#define GO_6 6
#define GO_7 7
#define GO_8 8
#define GO_9 9
#define GO_10 10
#define GO_11 11
#define GO_12 12
#define GO_13 13
#define GO_14 14
#define GO_15 15
#define Next_GO_4 16
#define Next_GO_12 17
#define STOP 18
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
#define Enemyzidan_dam 10
#define Myzidan_dam 10
#define Daodan_dam 10
#define Collision_with_blue_dam 20
#define Collision_with_yellow_dam 20
#define Collision_with_weixing_dam 40
#define Collision_with_boss_dam 100
#define Blood_Player 100
#define Blood_Blue 120
#define Blood_Yellow 100
#define Blood_Boss 15000
#define Blood_Weixing 700
////////////////////////////////////////////////////////
#define Sorce_from_blue 88
#define Sorce_from_weixing 666
#define Sorce_from_boss 6666
#define Sorce_from_yellow 66
//////////////////////////////////////////////////////////////////////////////////////////
#define weixing_speed_y (rand()%2+3)
#define choose_blue_pos (170+rand()%400)
#define choose_number_less (2+rand()%2)
#define choose_number_more (3+rand()%3)
#define choose_weixing_pos_x (250+rand()%250)
///////////////////////////////////////////////////////////////////////////////////
////黄色飞机的模式指令集
int Right_mid_left[]={GO_8,40,GO_9,5,GO_10,5,GO_11,5,GO_12,12,GO_13,5,GO_14,5,GO_15,10,GO_0,45,STOP};
int Left_mid_right[]={GO_8,40,GO_7,5,GO_6,5,GO_5,5,GO_4,12,GO_3,5,GO_2,5,GO_1,5,GO_0,45,STOP};
int Right_left[]={GO_12,60,GO_13,3,GO_14,3,GO_15,3,GO_0,3,GO_1,3,GO_2,3,GO_3,3,GO_4,3,GO_5,3,GO_6,3,GO_7,3,GO_8,3,GO_9,3,GO_10,3,GO_11,3,Next_GO_12,85,STOP};
int Left_right[]={GO_4,60,GO_3,3,GO_2,3,GO_1,3,GO_0,3,GO_15,3,GO_14,3,GO_13,3,GO_12,3,GO_11,3,GO_10,3,GO_9,3,GO_8,3,GO_7,3,GO_6,3,GO_5,3,Next_GO_4,80,STOP};
///////////////////////////////////////////////////////////////////////////////////
//////各个游戏对象的变量
int Player_sorce=0; //玩家得分撒
int Player_state; //玩家状态
int Game_state=GAME_STATE_INIT; //初始游戏状态
int Player_ship=3; //玩家飞机数
int Blue_state[MAX_NUM_BLUE]; //兰色飞机状态
int Yellow_state[MAX_NUM_YELLOW]; //黄色飞机的状态。。
int Weixing_state[MAX_NUM_WEIXING]; //卫星状态
int Baowu_state[MAX_NUM_BAOWU]; //报务状态
int Daodan_state[MAX_NUM_DAODAN]; //导弹状态
int Myzidan_state[MAX_NUM_MYZIDAN]; //玩家子弹的状态
int Enemyzidan_state[MAX_NUM_ENEMYZIDAN]; //敌机子弹的状态
int Boss_state=DEAD; //老王的状态
int Scanner_show=0; //是否显示扫描器的变量
int Scanner_time=0; //控制扫描器显示与不显示之间的切换速度
int control_myzidan=0; //控制子弹的发射速度
int control_daodan_rate=0; //控制导弹的发射速度 60帧一次
int control_daodan=0; //控制导弹的内部循环
int control_menu=1; //控制菜单状态之间的切换。。。。
int zidan_mode; //玩家的子弹模式。。。
int daodan_mode; //玩家的导弹模式。。。
int addspeed_mode; //玩家的加速。
int sorce[5]; //存放玩家得分 一共5位数 记录每一位的数字。
int blood[3]; //记录完家的血 共3位
int control_show_enemy=0; //控制开场的时候的文字显示时间。。
int player_win=0; //控制玩家是否获得胜利
int control_win=0; //控制结束的时候飞机飞出场景和输出文字的时间
int yellow_over=0; //判断黄色飞机是否在boss被打死后被消灭完
int blue_over=0;
int weixing_over=0;
int check_win=0; //判断是否胜利。。
int control_stop1=0; //判断是否暂停游戏
int control_stop2=0; //0为游戏中 1为暂停
int part=1; //关数
int Boss_dead_time=0; //老王死的次数
int show_instraction=0;
int show_instraction_time=0;
////////////////////////////////////////////////////////////////////////////////////////////
POINT Blue_pos[MAX_NUM_BLUE]; //记录活着的兰色飞机的位置
POINT Boss_pos;
POINT Weixing_pos[MAX_NUM_WEIXING];
POINT Yellow_pos[MAX_NUM_YELLOW];
//////////////////////////////////////////////////////////////////////////////////
LPDIRECTDRAWSURFACE7 lpddhelp=NULL;
LPDIRECTDRAWSURFACE7 lpddmainmenu=NULL;
LPDIRECTDRAWSURFACE7 lpddbackground=NULL;
LPDIRECTDRAWSURFACE7 lpddmenuexit=NULL;
LPDIRECTDRAWSURFACE7 lpddmenuinst=NULL;
LPDIRECTDRAWSURFACE7 lpddinstraction=NULL; //一个离屏表面
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//游戏函数
int Game_Init();
int Game_Main();
void Game_Shutdown();
int Move_And_Draw_Background();
int Move_And_Draw_Scanner(int,int,POINT *,POINT *,POINT * ,POINT); //玩家 boss 兰色飞机 黄色飞机 卫星
///////////////////////////////////////////////////////////////////////////////////
int Init_Blue();
int Draw_Blue();
int Start_Blue(int,int);
int Delete_Blue();
int Move_Blue();
int Check_Blue();
////////////////////////////////////////////////////////////////////////////////////
int Init_Weixing();
int Draw_Weixing();
int Start_Weixing(int x, int y,int vx, int vy);
int Delete_Weixing();
int Check_Weixing();
int Move_Weixing();
/////////////////////////////////////////////////////////////////////////////////////
int Init_Daodan();
int Draw_Daodan();
int Start_Daodan(int,int,int,int,int); //参数分别为位置 X,Y 动画模式 Z,速度 XV,YV
int Delete_Daodan();
int Move_Daodan();
int Check_Daodan();
////////////////////////////////////////////////////////////////////////////////////
int Init_Myzidan();
inline int Start_Myzidan(int,int,int);
int Draw_Myzidan();
int Delete_Myzidan();
int Move_Myzidan();
int Check_Myzidan();
/////////////////////////////////////////////////////////////////////////////////////
////黄色飞机的函数 模式AI 或者FSM有限状态机
int Init_Yellow();
int Start_Yellow(int mode); //开始应该能可以控制输入哪个模式的
int Draw_Yellow();
int Delete_Yellow();
int Move_Yellow();
int Check_Yellow();
///////////////////////////////////////////////////////////////////////////////////////
//宝物的函数。。。
int Init_Baowu();
int Delete_Baowu();
int Move_Baowu();
int Check_Baowu();
int Start_Baowu(int,int);
int Draw_Baowu();
///////////////////////////////////////////////////////////////////////
///BOSS的函数
int Init_Boss();
int Delete_Boss();
int Move_Boss();
int Check_Boss();
int Start_Boss(int,int);
int Draw_Boss();
/////////////////////////////////////////////////////////////////////////
///敌机子弹函数
int Init_Enemyzidan();
int Delete_Enemyzidan();
int Move_Enemyzian();
int Check_Enemyzidan();
inline int Start_Enemyzidan_Blue_And_Yellow(int,int); ///参数是其出现位置。。出现后速度为记录的玩家之间的距离之差 分别在X和Y轴上。。
inline int Start_Enemyzidan_Weixing(int,int);
inline int Start_Enemyzidan_Boss(int,int);
int Draw_Enemyzidan();
///////////////////////////////////////////////////////////////////////////
int Init_Sorce();
int Draw_Sorce();
int Delete_Sorce();
///////////////////////////////////////////////////////////////////////
int Init_Blood();
int Draw_Blood();
int Delete_Blood();
//////////////////////////////////////////////////////////////////////
int Get_Sorce();
int Get_Blood();
////////////////////////////////////////////////////////////////////////
int Reset_Game();
////////////////////////////////////////////////////////////////////////
int background_i=1200; //专门用来循环背景的。。
UCHAR *dest=NULL;
UCHAR *source=NULL;
RECT dest_rect;
/////存放3个菜单的调色版
PALETTEENTRY mainmenupalette[256];
PALETTEENTRY menuexitpalette[256];
PALETTEENTRY menuinstpalette[256];
PALETTEENTRY menuinstraction[256];
////////////////主背景调色版
PALETTEENTRY mainpalette[256];
///////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
///定义各种游戏对象。。。
BOB Player; //玩家
BOB Blue[MAX_NUM_BLUE]; //兰色飞机
BOB Weixing[MAX_NUM_WEIXING]; //卫星
BOB Baowu[MAX_NUM_BAOWU]; //宝物
BOB Yellow[MAX_NUM_YELLOW]; //黄色飞机
BOB Boss; //老王
BOB Myzidan[MAX_NUM_MYZIDAN]; //玩家子弹
BOB Enemyzidan[MAX_NUM_ENEMYZIDAN]; //敌机子弹
BOB Daodan[MAX_NUM_DAODAN]; //导弹
BOB Sorce; //玩家得分
BOB Blood; //玩家的血
//BOB Jiguang //第二关的老王会发其他怪东东?雷电脉冲?
//注意!!!!!!!!!!BOB的varsI 项 第0,放的血 第1 放的爆炸持续时间 第2放的是飞机发射子弹的时间 或者是和玩家的位置做比较
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -