游戏旗-引领网游新革命
今天是:
您现在的位置: 游戏旗 >> 电子竞技 >> 星际争霸 >> 星际文化 >> 电子竞技正文
从红警到星际——编程思想的大转变 2008-1-24 9:00:00 文/sleuth
  • 网站:游戏旗
  • 时间:2008-2-7 20:43:19
  • 人气值:
  我最开始玩的是红色警戒,那时候一般只造一个兵营和一个机械厂,然后疯狂点兵,等着1个1个慢慢造出来(我只打电脑)。后来接触星际了,开始非常的不习惯,因为它没有一个固定的界面,可以造各种单位,而是要先选取一个建筑,然后在屏幕右下角选兵来造。

  后来又发现,星际里,都是要先选一个东西,然后右下角出现这个东西可以进行的操作,习惯了之后,觉得星际这样的设计更加合理,更加符合世界的本来面貌。

  恰好那时学了c++这门课,一直不太明白面向对象程序设计是什么意思,和面向过程有什么区别,突然我想到了星际,这不就是面向对象程序设计的经典案例吗?

  让我们来看看c++和星际的共同点。

  面向对象程序设计的核心概念就是类和对象,星际里,一种单位就是一个类,这个单位的实例就是对象,比如zealot是个类,而游戏中你造出的一个zealot就是一个对象。

  类有数据成员和成员函数,星际里的一个单位,也有属性和它的方法,还是以zealot为例,他的属性有血量、攻击力、盔甲、是否被辐射等等很多很多,他的方法有移动,攻击,hold等等,就是右下角里显示的。
  这些属性都是只读的,体现了类的封装性,你不可以直接修改zealot的血量,除非你通过方法,比如你A他,或者给他补血。

  类的另一个重要特征是继承性,星际里,很多单位都有共同属性,比如血量,盔甲,是否中绿毒等等,还有很多共同方法,如move,stop等等。将这些特征抽象出来,组成一个基类,有这些特征的单位继承这个基类,当然这个基类在游戏中是不会出现实例的。
  类还可以组合,如航母包括本体和小飞机,tank包括底座和炮台。
  类还有多态性,比如对函数重载来说,同时点右键,却可以是移动,或攻击或修理,这取决于点中的单位是什么,好比调用相同名称的函数,具体是哪一个由参数决定。
  还有运行时的多态,比如相同的方法,不同的对象执行他有不同的含义,好比同是A键,有些单位是attack,mm却是补血。

  红警是不是用面向过程语言写的我不敢肯定,但是他的操作方式无疑很符合面向过程的思想,他不是先选一个单位,然后进行操作,而是直接先选操作,然后看操作什么单位。相当于这个操作是个全局函数,参数是各个单位。

  显然,这是将操作与数据脱离了的,因为操作不属于任何一个类。

  总结:星际这款游戏体现了面向对象思想的精髓,如果你打算学习c++等面向对象语言,
  我建议你先学会打星际。
  • 下一个电子竞技: 没有了
  • 用户管理
    频道搜索
    热点资讯
  • 此栏目下没有热点电子竞技
  • 广告赞助
    图片资讯

    没有任何图片电子竞技
    游戏旗舰站版权所有 Copyright © 2004-2007 ucqi.com . All rights reserved 鲁ICP备07022879号