游戏开发技术.docVIP

  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文档。上传文档
查看更多
站长专用!! 游戏开发技术 在射击游戏中的子弹的发射,每一帧都要检测上一帧时子弹的位置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( hForeground, 0, P_AUTOMATIC ); ??? SetSpriteX( hBear, 0, P_AUTOMATIC ); ??? SetSpriteX( hApple, 0, P_AUTOMATIC ); ??? SetSpriteY( hApple, 0, P_AUTOMATIC ); file://将游戏单元的图形贴到BackBuffer上: ??? if( bTransDest ) ??? { ??????? gfxFillBack( dwColorKey ); ??????? DisplayFrameRate(); ??????? DisplaySprite( hBuffer, hApple, GetPlaneX(hForeground) ); ??????? DisplaySprite( hBuffer, hBear,? GetPlaneX(hForeground) ); ??????? DisplaySprite( hBuffer, hFox,?? GetPlaneX(hForeground) ); ??????? DisplayPlane( hBuffer, hForeground

文档评论(0)

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

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档