游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1569|回复: 1

[求助]小弟看数据结构在游戏中的简单应用有一处不明白.

[复制链接]

15

主题

231

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
发表于 2009-9-24 22:42:00 | 显示全部楼层 |阅读模式
文章:http://dev.gameres.com/Program/Control/datastruct.htm中提到了有关链表的操作,小弟有一事不明白.那就是_StrucHead在哪里定义?
void AddBullet(struct BULLET*)的参数怎么传?可否举一例,谢谢各位.


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->bulletpos.x-=m_ispeed;  // 更新子弹数据
    ………
    st_llMyBullet=st_llMyBullet->next;    // 查找运算
  }

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-9-25 12:58:00 | 显示全部楼层

Re:[求助]小弟看数据结构在游戏中的简单应用有一处不明白.

帖子与程序,是两码事,,,,,
帖子,,你能明白LZ说的意思就行了.
程序,,才是需要能编译通过,并正角执行的.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 12:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表