1 / 7
文档名称:

数据结构的作用之游戏篇样本.doc

格式:doc   大小:40KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构的作用之游戏篇样本.doc

上传人:读书百遍 2020/12/29 文件大小:40 KB

下载得到文件列表

数据结构的作用之游戏篇样本.doc

相关文档

文档介绍

文档介绍:数据结构作用(游戏篇)
02月19日 星期二 20:43
在游戏编写中, 不可避免出现很多应用数据结构地方, 有些简单游戏, 只是由多个数据结构组合, 所以说, 数据结构在游戏编程中饰演着很关键角色。
  本文关键讲述数据结构在游戏中应用, 其中包含对链表、 次序表、 栈、 队列、 二叉树及图介绍。 读者在阅读本文以前, 应对数据结构有所了解, 而且熟悉C/C++语言多种功用。 好了, 现在我们由链表开始吧!
1、 链表
  在这一节中, 我们将经过一个类似雷电飞机射击游戏来讲解链表在游戏中应用。 在飞机游戏中, 链表关键应用在发弹模块上。 首先, 飞机子弹是要频繁出现, 消除, 其个数也是难以预料。 链表关键优点就是能够方便进行插入, 删除操作。 我们便将链表这一数据结构引入其中。 首先, 分析下面源代码, 在其中我们定义了坐标结构和子弹链表。
  struct CPOINT
  {
    int x;  // X轴坐标
    int y;  // Y轴坐标
  };
  struct BULLET
  {
    struct BULLE* next;  // 指向下一个子弹
    CPOINT bulletpos;   // 子弹坐标
    int m_ispeed;     // 子弹速度
  };
  接下来代码清单是飞机类中相关子弹定义:
  class CMYPLANE
  {
  public:
    void AddBullet(struct BULLET*);  // 加入子弹函数, 每隔一定时间加弹
    void RefreshBullet();       // 刷新子弹
  privated:
    struct BULLET *st_llMyBullet;   // 申明飞机子弹链表
  };
  在void AddBullet(struct BULLET*)中, 我们要做操作只是将一个结点插入链表中, 而且每隔一段时间加入, 就会产生连续发弹效果。
  这是加弹函数关键源代码:
  void AddBullet(struct BULLET*)
  {
    struct BULLET *st_llNew,*st_llTemp;  // 定义临时链表
    st_llNew=_StrucHead;          // 链表头(已初始化)
    st_llNew->(BULLET st_llMyBullet *)malloc(sizeof(st_llMyBullet));  // 分配内存
    st_llTemp= =_NewBullet;        // 临时存值
    st_llNew->next=st_llTemp->next; st_llTemp->next=st_llNew;
  }
  函数Void RefreshBullet()中, 我们只要将链表历遍一次就行, 将子弹多种数据更新, 其中关键源代码以下:
  while(st_llMyBullet->next!=NULL)
  {
    // 查找
    st_llMyBullet