设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 游戏开发 >> 《Windows游戏编程大师技巧》(第二版)第11章
精品推荐
游戏开发点击TOP10
·DirectX5.0最新游戏编程指南 DirectDraw教程篇 二、第一个DirectDraw实例
·用Excel编写小游戏
·五子棋的原代码
·游戏开发方面相关的电子书下载
·游戏文件系统的解决方案
·基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III
·用MFC构造DirectX应用框架
·游戏开发开门
·《Windows游戏编程大师技巧》(第二版)第11章
·DirectX8.1的DirectDraw7研究手记(三)
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

《Windows游戏编程大师技巧》(第二版)第11章

作者: 来源:网络文章 时间:2005-12-17 22:39:07

《Windows游戏编程大师技巧》(第二版)第11章(9) 例如,看一下程序DEMO11_2.CPPEXE。该程序实现了阶乘算法。注意一下阶乘的溢出速度。看看你的机器能计算到多大阶乘。绝大多数的机器可以计算到69!不骗你。
数学

我们来递归地实现一下菲波那契Fibonacci算法。第n个Fibonacci数列元素fn=fn-1+fn-2,另外,f0=0,f1=1,那么,f2=f1+f0=1,f3=f2+f1=2。所以整个Fibonacci序列为:0,1,1,2,3,5,8,13…数一数向日葵中一圈圈的种子数目,恰好是Fibonacci序列。

树结构
接下来我们要讨论的高级数据结构是:树结构(tree)。通常人们使用递归算法来处理树结构,因此我在上面论述中特别提到了递归。图11-6图示了一些不同的树状数据结构。

图11-6:树的拓扑结构
 
人们发明树结构,用于储存和搜索海量的数据。最常见的树结构是二叉树,也叫作B-树或二分查找树(BST)。树结构是从单一根节点发散出的树状结构,包含许多子节点。每个节点可以派生出一个或两个子节点(兄弟节点,Sibling),二叉树因此而得名。而且我可以讨论一个二叉树的阶(Order),即该树一共有几层。图11-7所示的是不同层次的二叉树。
图11-7:一些不同阶的二叉树
 
关于树结构,有趣的是信息查询的速度很快。绝大多数二叉树使用单一的关键字来查询数据。例如,假定你想创建一个包含游戏对象记录的二叉树,且每一个游戏对象具有多个属性,你可能会使用游戏对象的创建时间作为关键字,或将数据库中的每一节点定义为代表一个人。下面是可以用来保存单个人的节点的数据结构:
typedef struct TNODE_TYP
   {
   int age;         // age of person
   char name[32];   // name of person
   NODE_TYP *right; // link to right node
   NODE_TYP *left;  // link to left node
   } TNODE, *TNODE_PTR;
注意树节点与链表节点的相似之处!它们之间惟一的不同是使用数据结构并构造树的方法。看一看上例,假如有五个对象(人),其年龄分别为5、25、3、12和10。图11-8表示包含该数据的两个不同的二叉树。不过,你可以做得更好,比如在插入算法中根据数据插入顺序来维持二叉树的某种属性。

图11-8:数据集合 年龄 {5,25,3,12,10} 的二叉树编码
 
注意
Of course, the data in this example can be anything you want.
当然,在本例中,数据可以定义为任何值。

注意在建立如图11.8所示的二叉树时,使用了如下约定:任一节点的右子节点总是大于或等于该节点本身,左子节点总是小于其本身。你还可以使用其他的约定,只要保持一致性。
二叉树可以存储海量数据,而且应用“二分查找法”可以快速地检索数据。这是二叉树的优越性所在。比如,如果一个二叉树带有一百万个节点,至多进行20次比较便可以检索到数据!这是不是棒极了?其原因在于检索中的每次迭代,搜索空间的节点数都减少一半。从根本上说,假如有n个节点,那么平均搜索次数为log2 n,运行时间为O(log2 n)。
注意
上述所说的搜索时间只适于平衡二叉树——即每一层次均含有相等的左右子节点的二叉树。如果二叉树不是平衡的,那么它就退化为一个链表,而搜索时间也退化为一个线性函数。

B树第二个非常酷的属性是你可以定位子树并单独处理它。该子树仍然具有B树的所有属性。因此,如果你知道检索的位置,便可以搜索子树检索你所需要的东西。这样一来,你便可以创建树的树,或建立子树的索引表,而不必处理整个树。这在3D场景建模中是非常重要的。你可以为整个游戏空间建立一个树结构,而以数百棵子树来表示空间中的各个房间。你还可以创建另一个树结构来指代具有偏序排列的指向子树根指针的链表。如图11-9所示。有关这方面更多的内容会在本书的以后章节中论及。

图11-9:在B树结构上使用一个二级索引表
 
最后,让我们谈一谈何时使用树结构。我建议,当所处理的问题或数据类似于树结构时使用树结构。比方说,当你随手画出问题的草图,而发现其中具有左右分支的话,树结构明显应该是合适的。

1.《Windows游戏编程大师技巧》(第二版)第11章(1)
2.《Windows游戏编程大师技巧》(第二版)第11章(2)
3.《Windows游戏编程大师技巧》(第二版)第11章(3)
4.《Windows游戏编程大师技巧》(第二版)第11章(4)
5.《Windows游戏编程大师技巧》(第二版)第11章(5)
6.《Windows游戏编程大师技巧》(第二版)第11章(6)
7.《Windows游戏编程大师技巧》(第二版)第11章(7)
8.《Windows游戏编程大师技巧》(第二版)第11章(8)
9.《Windows游戏编程大师技巧》(第二版)第11章(9)
10.《Windows游戏编程大师技巧》(第二版)第11章(10)
11.《Windows游戏编程大师技巧》(第二版)第11章(11)
12.《Windows游戏编程大师技巧》(第二版)第11章(12)
13.《Windows游戏编程大师技巧》(第二版)第11章(13)
14.《Windows游戏编程大师技巧》(第二版)第11章(14)
15.《Windows游戏编程大师技巧》(第二版)第11章(15)
16.《Windows游戏编程大师技巧》(第二版)第11章(16)
17.《Windows游戏编程大师技巧》(第二版)第11章(17)
18.《Windows游戏编程大师技巧》(第二版)第11章(18)
19.《Windows游戏编程大师技巧》(第二版)第11章(19)
20.《Windows游戏编程大师技巧》(第二版)第11章(20)
21.《Windows游戏编程大师技巧》(第二版)第11章(21)
22.《Windows游戏编程大师技巧》(第二版)第11章(22)
23.《Windows游戏编程大师技巧》(第二版)第11章(23)
24.《Windows游戏编程大师技巧》(第二版)第11章(24)
25.《Windows游戏编程大师技巧》(第二版)第11章(25)
26.《Windows游戏编程大师技巧》(第二版)第11章(26)
27.《Windows游戏编程大师技巧》(第二版)第11章(27)
28.《Windows游戏编程大师技巧》(第二版)第11章(28)
29.《Windows游戏编程大师技巧》(第二版)第11章(29)
30.《Windows游戏编程大师技巧》(第二版)第11章(30)
31.《Windows游戏编程大师技巧》(第二版)第11章(31)
32.《Windows游戏编程大师技巧》(第二版)第11章(32)
33.《Windows游戏编程大师技巧》(第二版)第11章(33)
34.《Windows游戏编程大师技巧》(第二版)第11章(34)
35.《Windows游戏编程大师技巧》(第二版)第11章(35)
36.《Windows游戏编程大师技巧》(第二版)第11章(36)
37.《Windows游戏编程大师技巧》(第二版)第11章(37)
38.《Windows游戏编程大师技巧》(第二版)第11章(38)
共38页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [388 :>

《Windows游戏编程大师技巧》(第二版)第11章 相关文章:
《Windows游戏编程大师技巧》(第二版)第11章 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com