目录
飞机大战结构体游戏三部曲初始化Game_Init()绘制Game_Paint()数据更新Game_Updata()主函数按键的处理说明链表的增删操作添加敌方飞机敌方飞机移动添加子弹子弹移动
飞机大战
基于链表操作的飞机大战游戏
结构体
定义飞机大战所需结构体并全局定义结构体成员
//子弹的结构体
struct bullet
{
int x;
int y;
struct bullet* pnext;
};
// 我方飞机
struct plane //我方飞机的结构体
{
int x, y; //飞机的坐标
bool exist; //飞机是否存活 exist==false(0) 飞机灭亡 ; exist=ture(1) 飞机存在
struct bullet* bt; //子弹
};
//敌方飞机
struct enemy
{
int x, y; //敌方飞机的坐标
struct enemy* pnext; //用来保存下一个飞机的地址
};
struct plane myPlane; //定义我方飞机的结构体变量.
struct enemy* emy_Phead; //敌方飞机链表的头节点.
游戏三部曲
游戏三部曲:初始化,绘制,数据更新
初始化Game_Init()
包括加载图片和初始化游戏数据
void Game_Init()
{
loadimage();
myPlane.y = 700;
myPlane.x = rand() % 500; //范围 0~499
myPlane.exist = true; //飞机存在为true
//初始化子弹链表的头结点
myPlane.bt = (struct bullet *)malloc(sizeof(struct bullet));
myPlane.bt->pnext = NULL;
//初始化敌方飞机的头结点
emy_Phead = (struct enemy *)malloc(sizeof(struct enemy));
emy_Phead->pnext = NULL;
//初始化其他变量
begin = GetTickCount();
t1 = GetTickCount();
g_bk.X = 0;
g_bk.Y = 0;
//开局先添加两架敌方飞机
AddEnemy();
AddEnemy();
}
绘制Game_Paint()
包含背景图片、我方飞机,敌方飞机、子弹的绘制
void Game_Paint()
{
//开始批量绘图
BeginBatchDraw();
cleardevice(); //刷新屏幕
/*========================贴背景图片========================*/
putimage(g