你的位置:首页 > ASP.net教程

[ASP.net教程]DOTA与面向对象的编程思想——英雄的生命周期


  很明显,昨天的文章阅读量同比下降了25%。估计大家可能都是被我的文章名字给糊弄过来的,然而看起来并没有什么营养,因此就没多大兴趣了。我很理解,因为我本是对此的胡思乱想,加上自圆其说,正确性尚有待考究,营养更不要提了。

  上一篇的同学评论让我去看看《面向对象的游戏开发》,这带给了我一个思考,就是我写这个东西的有没有必要。考虑必要性有很多原因,针对不同的方面,我总结两个原因。1.面向读者,是否开卷有益,能否给读者带来什么启发或者一点点进步。2.对于我,能否给我带来再编程方面的进步。对于第一个,我想应该是没有多大必要了。而对于第二个,进步其实也是微乎其微,因为我并不会像完成一个项目似的去查各种资料,只是自己画地为牢,自说自话而已。如果有一点好处的话,就是能够让我在以后,更加熟悉这个思想之后,看到现在的我的幼稚,也是不错的回忆。

  可以看到,每次开笔,我都些许纠结。吾尝终日而思矣,不如须臾之所学也。想太多不好,开始吧!

  对了,我昨天总结了一个道理:当你坚持走一条路,走的足够远的时候,其中的几小段弯路,回头看看,也一样是直的。共勉!

  此篇文章的题目叫做《英雄的生命周期》,为什么这么说呢?我是参考Android开发中,活动的生命周期给强制套用的,嘿嘿。上图。

 

  解释一下,游戏开始之后,我们第一件做的事情是选英雄:首选,repick,random,三种方式,这三种方法都调用了两个方法onCreate(),onStart()从而建立了英雄实例。英雄建立好了,你就可以对英雄操作了,买装备,学技能。

  有了主角,游戏就开始了,在游戏中补兵、升级、杀人、拿塔、三杀、暴走、被草然后去泡温泉,这时候你死了onStop()调用了,其实你的英雄实例还在,只是地图上不可见了,也就是说你虽然死了,但是你还活着。复活时间到了,就调用了onStart()重新让英雄在地图上可见,新一轮的杀戮又开始了。直到对方的冰封王座倒下,游戏结束,然后你的英雄实例才被销毁。

  这就是一个英雄的生命周期。

  最后,谈谈我对生命周期的理解。生命周期在面向对象编程中的作用就是限定了你在合适的时机调用合适的方法,让你编程有一个时间轴可以遵循。比如你杀了一个人,调用了经验和金钱自动增加的方法,然后调用了判断经验是否足够升级的方法,够了升级,就调用攻击力增加,血量增加,蓝量增加的方法,这就是合适的时机调用合适的方法。

  这里边貌似有一种主动调用和被动调用,我不太懂,希望读到这里的各位方家,能够给一些指点,关于面向对象中的方法调用的问题以及关于生命周期的理解,希望大家分享一下观点。