📄 tank.h
字号:
#ifndef TANK_H
#define TANK_H
#define TANK_DEBUG 0 //调试用的
#define GAME_PASSWORD //需密码进入
#define TANKLEFT_EASY 4 //简单电脑每个位置的数量
#define TANKLEFT_NOMAL 5 //中等。。。。
#define TANKLEFT_DIFFICULTY 6 //困难。。。。
#define TANKSET_EASY_MAXNUM 4 //游戏设置简单时敌人坦克和子弹的最大数量
#define TANKSET_NOMAL_MAXNUM 6 //。。。
#define TANKSET_DIF_MAXNUM 8 //。。。
#define TREES_MAXNUM 10 //树的最大数量
#define PLAYTANKSPEED0 4 //
#define PLAYTANKSPEED1 2
#define ENEMYTANKSPEED0 4 // 3 敌人0的坦克速度
#define ENEMYTANKSPEED1 3 // 2 .........
#define ENEMYTANKSPEED2 4 // 2
#define ENEMYTANKSPEED3 2 // 2
#define ENEMYTANKSPEED4 4 // 3
#define ENEMYTANKSPEED5 3 // 2
#define ENEMYTANKSCORE0 30 //敌人0的分植
#define ENEMYTANKSCORE1 40
#define ENEMYTANKSCORE2 100
#define ENEMYTANKSCORE3 100
#define ENEMYTANKSCORE4 50
#define ENEMYTANKSCORE5 60
#define ENEMYSPEEDZEROTIME 120 //敌人定适奔浔
#define PLAYERTANKFLASHTIME 80 //坦克出生时的无敌状态持续的时间
#define PLAYERTANKUNDEADTIME 160 //获得物品的无敌时间
#define PARTPROTECTIONTIME 200 //城堡无敌的时间
#define TIMERPERIOD_GAMEIN 16 //游戏中
#define FRAME_PER_SEC 12 //200/TIMERPERIOD_GAMEIN //每秒的侦数
#define TIMERPERIOD_GAMEOVER 100 //游戏结束的过度,
#define MOVIEPLAYMAX 20 //最大播放动画数目
#define MAPSIZE 28 //地图大小减1
#define MAXBARRIER 21 //最大关卡数
#define MOVEPASSMAX 3 //最大可通过地图块编号0-3
#define BULLETPASSMAX 7 //最大子弹可通过地图块编号4-7
#define BRICKTile 8 //砖块
#define DAMAGEDBrick 9 //受损砖块地图块编号
#define TERRENEWall 10 //土块编号,可一枪击碎的
#define DEFALTTitle 11 //暂时没用的
#define RCTile 12 //完整的混凝土块13、14和15为受损的混凝土块,打一枪则加一
#define FIRMNESSTile 16 //16和17为永固地图块编号
#define PARKTILE 18 //18、19、20、21为老巢地图块
#define MOVIEMAX 12 //最大动画数目
#define MAPWIDTHMAX 28 //地图宽
#define MAPHIGHMAX 28 //地图高
#define TILWID 8 //地图块宽
#define TILHIG 8 //地图块高
#define MAXLIFT 6 //最多生命
#define SCREENX 8 //屏幕其始坐标
#define SCREENY 8 //屏幕其始坐标
#define BULLETWID 12 //子弹宽度
#define BULLETHIG 12 //子弹高度
#define MOSTTANKAREA 10 //屏幕上最大坦可数目
#define MOSTBULLETAREA 30 //屏幕上最大子弹树木
#define X_DIR 1 //x方向
#define Y_DIR 2 //y方向
#define FLASHMEMERYFREE 50 //小于该容量是不写记录
#define TANKALARMTIMER 5 //坦克中闹铃提示的时间澹
#define EASYAI 15 //容易的ai值
#define MIDAI 80 //中等的ai值
#define HARDAI 95 //困难的ai值
//#define TANK_GAME_PASSWORD 1
#define TANKSNDDEFCLOSE 1 //刚进去游戏默认声音为关
#define SCREENWID (TILWID*MAPWIDTHMAX) //屏幕宽
#define SCREENHIG (TILHIG*MAPHIGHMAX) //屏幕高
//#define GetPositiveRand(a) abs(GetRand(a)) //得到正的随即数
#define DIVIDE8(a) (a>>3) //除于8
#define MULTIPLY8(a) (a<<3) //乘于8
#define GAME_DIR "A:\\系统 \\数据 \\游戏 \\" //游戏数据路径
#define GAME_TANKMAP_DIR "A:\\系统 \\数据 \\游戏 \\MAPTANK \\" //地图路径
#define PASSWORDPATH "A:\\系统\\配置"
#define SHOW_BACK_MAP 10
#define SHOW_BACK_STAGE 11
#define SHOW_STAGE_NUM 12
#define SHOW_MAP_BACK 20
#define SHOW_MAP 21
#define SHOW_INFSHOW 22
#define SHOW_MAP_OVER 28
#define CHANGE_DIR 1
//typedef unsigned char BOOLEAN;
enum FACETO {FACETOUP, FACETORIGHT, FACETODOWN, FACETOLEFT};
enum GAMESTATUS {COMMON, LOSS, WON};
enum GOODSTYPE {FIREPOWER, BOMB, LIFE, BODYSTRONGER, PROTECTION, TIMER, MONEY100, MONEY200, UNDEAD};
//enum dd {FACETOUP,FACETORIGHT,FACETODOWN,FACETOLEFT};
typedef struct
{
INT8U width;
INT8U high;
INT8U maptiles_id[MAPWIDTHMAX*MAPHIGHMAX];
}MapType;
typedef struct
{
INT8U x;
INT8U y;
}POINT;
typedef struct
{
int active; //是否有效
int speed; //速度
int dir; //方向
int power; //威力
int x; //坐标
int y; //坐标
int wid; //宽
int hig; //高
int bullet_id; //图片
}GameTankBullet; //炮火结构
typedef struct
{
int active; //是否有效
int score;
int life; //生命
int speed; //速度
int dir; //方向
int status; //状态
int timer; //累时
int x; //坐标
int y; //坐标
int wid; //宽
int hig; //高
int bullettype; //炮火类型
int tank_id; //图片
}GameTank; //坦克结构
typedef struct
{
int active; //是否有效
int size; //动画图片大小 为size*size大小
int x; //坐标
int y; //坐标
int replay; //重复播放标志
int movie_frame_flag; //目前是第几祯
int maxframe; //最大的祯数目
int moviepic_startid; //图片
}GameMovie; //动画结构
typedef struct
{
short Left;
short Right;
short Up;
short Down;
short Fire;
short Quit;
}GameTankEventType; //游戏事件结构
typedef struct
{
int active; //有效标志
int clock; //剩余时间
int type; //类型
int x; //坐标
int y; //坐标
int wid; //宽
int hig; //高
int goods_id; //图片,要制造出闪烁的效果
}Goods; //物品结构
typedef struct
{
GameTank CurrentPlayer[1]; //坦克状态
int CurrentPlayerleft[1]; //人数
INT16U CurrentGameScores[1]; //分数
unsigned char CurrentBarrier; //关数
int GameDifficult; //游戏难度
} CurrentBarrierState; //上一关的状态
typedef struct
{
INT16U timer; //定时器句柄
int gamestatus; //游戏状态
int lossclock; //累时1
int wonclock; //累时2
int timflag; //跳转的标志
int parttimer; //宝物城墙护甲快消失时的显示
int parkflag; //输赢的标志
int barriesflag; //当前关数
int rank; //游戏音量
int tanktypechoce; //游戏中玩家坦克类型
int tankleverchoce; //游戏难度
int SoundFileExist; //声音文件是否存在
int TankSoundOpen; //声音文件是否打开
int CopyPreGameState; //是否复制上一关的状态,游戏重新开始
CurrentBarrierState CurrentGameState; //上一关的状态
GameTankBullet playerbullet[1][4][5]; //炮弹,前一维表示坦克的编号,后一维表示炮弹的方向,第三维表示该方向上的第几颗子弹
GameTankBullet enemybullet[8]; //炮弹
Goods goods; //物品
int hightscore; //高分记录
GameTank player[1]; //主角
INT16U scores[1]; //得分
int playerleft[1]; //主角剩余生命数目
int TankLeftAdd;
GameTank enemy[8]; //敌人
int enemyleft[4]; //各种类剩余敌人数目
GameMovie movie[MOVIEPLAYMAX]; //动画
MapType map; //地图
GameTankEventType events[1]; //游戏事件
int quit; //退出标志
}GameTankType; //游戏结构
typedef struct _TANK_SAVE
{
unsigned long size;
char Name[32];//键名字,用于查找
int GameType;
int GameLevel;
int rank;
int barriesflag;
int gamescors[10];
int sflag;
} TANK_SAVE;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -