大家好,我是作者:隐匿269,今天我带来的是用链表制作游戏,飞机大战(俗称:打飞机小游戏)。我会运用到图形库,没有图形库的伙伴不用着急,把打印图片的步骤省略,代码也能运行。
一、准备(大纲)
编程时,首先要做的就是整理好思路。我们要思考飞机大战的游戏规则,以及飞机的移动,敌机、子弹的创建和销毁等。总的可以分为一下几个环节。
* 1、初始化地图窗口,加载图片,飞机链表结构体的实现,变量的定义 * 2、生成我放飞机,并移动 * 3、发射子弹、移动、销毁 4、敌方飞机生成、移动、销毁 5、子弹消灭敌机 6、敌机和我放飞机碰撞 7、表示游戏结束 8、计分 9、背景音乐 |
通过以上的思路,我们就可以编写代码了。
二、准备(代码)
第一步,我们并不是要立刻编写,而是为以上的每一步作准备。"初始化地图窗口,加载图片"需要提前安装图形库。这点请在百度上自行搜所,我也会在后期做出一篇相关攻略。"飞机链表结构体的实现"则需要提前定义链表。
飞机大战,只有一架我放飞机,随机的敌机和子弹,因此我们创建两个链表。并提供链表及其节点的插入和销毁。
//头文件名称"Airplane.h"
#pragma once
#include <stdio.h>
#include <stdlib.h>
//头文件重复函数
//链表结构的声明和定义
//链表节点结构体的声明
typedef struct Node
{
int x;//坐标
int y;//坐标
int speed;//移动速度
struct Node*next;//指针域,用于连接下一个节点
}Node;
//链表结构体的声明
typedef struct Linklist
{
Node*head;//头部节点指针
Node*end;//尾部节点指针
}LL;
//链表节点的创建函数
Node *linklist_init(int x, int y, int speed)
{
Node*temp = (Node*)malloc(sizeof(Node));
if (temp == NULL)
{
return 0;
}
temp->speed = speed;
temp->x = x;
temp->y = y;
temp->next = NULL;
return temp;
}
//链表节点的插入
void linklist_insert(LL*list, int x, int y, int speed)
{
if (NULL == list)
{
return;
}
if (list->head == NULL)
{
list->head = list->end = linklist_init(x, y, speed);
}
else
{
list->end->next = linklist_init(x, y, speed);
list->end =