⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 all.h

📁 一个类似于街机的小游戏
💻 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 + -