1 / 10
文档名称:

游戏开发技术6.doc

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

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

分享

预览

游戏开发技术6.doc

上传人:xxj16588 2016/5/4 文件大小:0 KB

下载得到文件列表

游戏开发技术6.doc

文档介绍

文档介绍:站长专用!! 游戏开发技术 6 在射击游戏中的子弹的发射,每一帧都要检测上一帧时子弹的位置 a 然后确定当前帧子弹的位置 b然后将该位置传给重画游戏单元的部分,在当前帧 b的位置贴上子弹的图象。在即使战略游戏中两军对战时,程序在每一帧都要根据上一帧每个战斗单位的位置和该战斗单位移动的目的、到该目的之间的障碍物的位置以及一定的路径算法确定在当前帧该战斗单位的新位置;还有要取得在上一帧时该战斗单位的生命值和所受的打击次数及强度,以确定该战斗单位的生命值。通过阅读 ProcessInput() 函数的代码, 我想您一定已理解了刷新游戏单元的概念。而从上面的两个例子中, 您也一定发现用例程的方法很难实现这两类游戏的要求。我们不可能对每一颗子弹,每一个战斗单位进行操作,而且我们并不知道游戏者会一次发射多少颗子弹也不知道游戏者会造多少个战斗单位。我们应该怎么办呢? 考虑到每一个战斗单位(或每一颗子弹)都有相似(或相同)的属性,那么我们可以采用结构数组来储存每一个战斗单位的位置和状态。这个办法好象可行!但是仔细想想,我们又遇到了上面谈到的问题我们并不知道游戏者会一次发射多少颗子弹也不知道游戏者会造多少个战斗单位。当然我们可以采用 Age of Empire 的方式---- 限制单位的数量(我并不是说 Age of Empire 采用的是这种办法) 。但是这意味什么呢! 意味着,如果我们限定数量为 50 的话,在游戏者只有一个士兵时,计算机却需要为这个士兵分配 50 倍的内存!而且游戏者还不一定造出 50 个士兵。显然这并不是一个好办法! 我们应该怎么办呢?链表!链表能满足我们的要求。 class Node { file:// 双向链表的指针。 Node* Next; Node* Pre; file:// 节点数据。 NODE_DATA data; ... }; 链表是一种结构体的集合。在链表中的每一个结构体都包含了一个元素或指针,它指向链表中的另一个结构体。这个指针用作两个结构体之间的联系。这个概念与数组有些相似,但它允许链表的动态增长。现在的游戏中凡是遇到这种问题的一般都是采用链表的。关于链表的更多的信息请阅读有关的资料。第六节画游戏单元画游戏单位的作用是在每一桢往屏幕上画游戏单位的图象。这就是本例程中画游戏单元的主函数: /** NewGameFrame */ int NewGameFrame( void ){ file:// 这里是设置游戏单元的位置: SetSpriteX( hFox, 0, P_AUTOMATIC ); SetSpriteY( hFox, 0, P_AUTOMATIC ); SetPlaneVelX( hBackground, GetSpriteVelX(hFox), P_ABSOLUTE ); SetPlaneVelX( hMidground, GetSpriteVelX(hFox), P_ABSOLUTE ); SetPlaneVelX( hForeground, GetSpriteVelX(hFox), P_ABSOLUTE ); SetPlaneX( hBackground, 0, P_AUTOMATIC ); SetPlaneX( hMidground, 0, P_AUTOMATIC ); SetPlaneX( hForegro