对我来说递归还是挺复杂的。一个简单的递归就要想很久,不过想清楚了之后的效果还是不错的。不少复杂的游戏设计中都会出现类似的规则。
当然,你也可以不使用递归,而是设定一些条件重复地调用一个方法。但那样的话代码量就变得很大,执行效率可能也会变慢。你是要牺牲易理解性换取效率,还是牺牲效率换取易理解性呢?很多时候玩家也会试图来理解你游戏的内在逻辑,能不能让他们轻松办到呢?
第十三周:九宫格(tic-tac-toe) 
九宫格,世界各地的小朋友可能都玩过的经典游戏。放大到5连就是五子棋。
为这个游戏编写电脑对手采用的是所谓的「蒙特卡罗方法」。也就是从目前这一步开始,推算出每一个可能的游戏结果。胜则加分,负则扣分,和则不加不减;最后选定分数最高的一步落子。这种算法在棋盘复杂的的情况下很难实用,但应付九宫格是绰绰有余。
然后,为了测试这个对手到底强不强,我把游戏规则反了一下变成「逆九宫格」。也就是谁先连到 3 个就算输。这种模式下,没有下中间那个位置的不败手,更能看出电脑的实力。第一盘我还没反应过来,结果输掉了。

特别声明:以上文章内容仅代表作者本人观点,不代表当乐观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与当乐联系(copyright@downjoy.com)