按前文的构思很快改好了程序,暂未发现异常。
现在可以开始做AI了。
因为我这个游戏比较简单,只要在合适的距离出腿就行了,所以理论上我可以编出一个无敌的电脑选手。
具体按这个策略:
在每一个循环结束时,如果双方距离大于腿长减去对方步长,则前进,否则出腿。
当然仅仅这样也会有漏洞,假如对方在你即将进入攻击范围内的那一瞬间出腿,下一步就撞在枪口上了。所以在距离仅差一步时,要加上对对方动作的判断,如果对方出腿,则停止,待对方收腿时抓住机会上前进攻。
更极端点,对方可能出腿一下立马缩回,然后伺机反击,所以在自己出腿时,也要随时注意敌方是否早早后退。但这样的策略有点完备过头了,毕竟我们是考虑如何让计算机击败玩家,而不是和另一台计算机对抗。实际上一开始减去一个步长的策略,就已经是考虑进了人的反应时间,假如是计算机,需要靠近更多,可能是两到三个步长。
所以一切从简,这个无敌的策略,可以留下些理论上的破绽,假如有真实玩家能击败这个机器人,那他一定是开了挂。
其实很多游戏,只要是比拼反应而非策略的,像CS里的机器人,自然也是可以做到不可战胜的。
但是这样就太无聊了,搞不好弄得玩家瞬间斯巴达然后狂问候家属。为了增添游戏的趣味性,同时也是为了练习,我决定做出几个不同难度等级的AI,最好各自有自己的性格特征。
前面所说的无敌型算一个,可以取名李小龙,让玩家感受什么叫绝望。
第二个难度对距离的掌握会稍有偏差,可能会远远的踢空,也可能过于深入危险距离。尽量模拟理智型玩家。取名为刘伟。
第三个难度对距离的掌握会更差,同时出腿的时机更无规律性,这样总体来说虽然更易战胜,但也可能偶尔会被其莽撞的出腿击中。取名为郑进。
最后一个难度设定得比较奇怪点,它在一般时候最无距离感最迟钝,但在即将死亡时变得极其凶悍,即化身无敌模式,持续一段时间后变回。取名为小强。
恩,人的创造力是无穷的,即便是如此简单的游戏规则也可以玩出花来,暂时就做这么几个角色,太多了也费工夫。