游戏开发案例在数据结构教学中应用实践.docVIP

游戏开发案例在数据结构教学中应用实践.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
游戏开发案例在数据结构教学中应用实践

游戏开发案例在数据结构教学中应用实践   文章编号:1672-5913(2009)06-0132-04   摘要:“数据结构”课程是计算机专业最重要的专业基础课,游戏开发技术是计算机应用技术最前沿的分支之一,实现由基础到前沿的跨越,是学生的希望所在,也是检验教学成功与否的重要指标。本文总结了游戏开发过程中的成功经验,及时反馈并自觉落实到教学过程中,对教师和学生都是有益的尝试。   关键词:数据结构;游戏开发;跨越   中图分类号:G642   文献标识码:B      从事“数据结构”教学的教师往往遇到的学生困惑是:数据结构有什么用?数据结构与计算机新技术的开发有什么关系?类似的问题一方面反映了学生对计算机新技术的渴望与困惑;另一方面也反映了“象牙塔”里的学校教育与技术开发市场之间的距离。   毋庸置疑的是,“数据结构”是计算机本科学生最重要的专业基础课,在游戏编程中扮演着极其重要的角色,而游戏开发技术又是计算机应用技术最前沿的分支之一。本文试图通过数据结构在游戏开发中的简单应用来解答学生的困惑,以此拉近学校教育与市场开发之间的距离。本文涉及到数据结构中的链表、顺序表、栈、队列、二叉树及图的概念,在此不做过多描述,希望读者阅读本文前对数据结构有所了解,并且熟悉C/C++语言的各种功能和应用。      1顺序表的应用      顺序表是数据结构中最简单、最常用的一种线性表,它的特点是,用一组地址连续的存储单元依次存储线性表的元素。砖块地图系统中使用的就是这种最简单的数据结构。这里对砖块地图系统做如下规定:构建一个简单的砖块地图系统,视角为俯视90度,并由许多个顺序连接的图块拼成。   (1) 定义图块   struct Plot //定义图块结构   {   int Access; //记录此图块是否可以通过    …… //中有每个图块的图片指针 等记录    };   Access为0时,表示此图块不可通过,为1表示能通过。   (2) 定义二维数组存放每个图块的值   定义的二维数组为:Plot Map[7][10]。通过循环将此地图初始化,初始化程序和生成地图如图1所示。    for (i=0;i=6;i++)    for (j=0;j=9;j++)      scanf(“输入第%行,第%列初始化值:%d ”i,j,Map [i][j]);      从图1看出,这个地图用顺序表表示非常直接。当控制人物在其中走动时,对人物将要走到的下一个图块进行判断,看其是否能通过。比如,当人物要走到(2,5)这个图块时,用如下判定函数来判断这个图块是否能通过:   x=3;y=5;   int Ispass(x,y)   {   return Map[x,y].Access; //返回图块是否 通过的值    }   以上只是简单的地图例子,使用顺序表也可以表示更为复杂的砖块地图。目前流行的整幅地图中也都要用到大量的顺序表,只不过在整幅中进行分块而已。      2链表应用      链表的主要优点就是可以方便地进行插入、删除操作。在游戏开发中,链表主要应用在有大规模的删除和添加操作上。在飞机游戏中,飞机的子弹是要频繁地出现、消除的,个数也是随机的。链表主要应用在发弹模块上。在下面的源代码中,我们就定义了坐标结构和子弹链表。   (1) 定义坐标结构   struct Cpiot //定义坐标结构   {   int x; //X轴坐标   int y; //Y轴坐标    };   (2) 定义子弹链表   struct Bullet //定义子弹链表   {   Cpiotbulletpos; //子弹的坐标   intbulletspd; // 子弹的速度   struct Bullet* next; //指向下 一个子弹   };   (3) 定义飞机类中的子弹   class Cmyplane   {    public:    void AddBullet(struct Bullet*);    //加入子弹的函数,每隔一定时间加弹   void RefreshBullet();    //刷新子弹   privated:   struct Bullet *St_MyBullet;    // 声明飞机的子弹链表   };   在void AddBullet(struct Bullet*)中,只要将一个结点插入链表中,并且每隔一段时间加入,就会产生连续发弹的效果。   (4) 加弹函数的主要源代码   void AddBullet(struct Bullet*)   {    st

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档