c++游戏编程(1)

今天读c++游戏编程其中有一段:

  "假如有20个不同敌人,5个不同类型的老板,而且本关里需要为每一个敌人调用ExecuteFrame()函数一次,则需要跟踪每一个敌人的类型。这意味着需要一个list保存每一种类型的敌人和老板,然后反复遍历这个链表。每当增加一个新类型时,都得记住增加一个链表,然后遍历它,这样做显然太啰嗦了。"

开始没能理解作者意思,让我郁闷的一会。后来想想作者的大意可能是:

    首先: class Enemy{};//敌人类 class Boos : public Enemy {};//boss类

      假设现在有 class EnemyA:public Enemy{}; class EnemyB :public Enemy{};

      在写程序时:list<EnemyA*> listA; list<EnemyB*> listB;list<Boss> listBoss;

        每创建一个EnemyA 或EnemyB或Boss对象时,将其对象放入相应list。然后可能在遍历时依次调用ExecuteFrame()此函数不是虚函数。

      如果新加一个EnemyC类型时就得增加一个相应的list<EnemyC*>对象;未免不够灵活。

    改进:将ExecuteFrame定义为虚函数,然后只要定义一个list<Enemy*>即可,把继承与Enemy的类的对象都放到此list中,然后可能在遍历时调用ExecuteFrame().就算增加新的敌人类型或老板类型,也可直接放入次链表,维护起来很方便。

      最后作者引入了虚函数的知识。

原文链接: https://www.cnblogs.com/zhangfeng86911/archive/2010/05/13/1734905.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++游戏编程(1)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/10813

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 上午12:21
下一篇 2023年2月7日 上午12:22

相关推荐