人机博弈,吃子棋游戏(一)总序

(1)什么是吃子棋?

     吃子棋,是小孩子学围棋的入门棋,其规则部分取自于围棋,但比围棋简单很多。

(2)吃子棋的行棋规则?

    1.吃子棋,在行棋时,若一方棋子没有被打吃,则其必须落子在能够紧对方棋子气的位置。

    2.吃子棋,当一方棋子处于被打吃的状态,则可以逃命,而不用紧对方棋子的气。

    3.吃子棋,当一方棋子被吃提,则输赢即分,吃子方胜。

    4.吃子棋,一般有两种赢棋方式,双打吃和征吃。

    5.吃子棋,起手棋必须位于天元。

 (3)应用设计思路

   设计此应用的总体思路如下:

   DATA:

   1.棋盘表示

   2.棋子表示

   3.计算棋子棋的辅助数据

   AI:

   1:走法产生(依据行棋规则,产生走法)

   2:估值核心(暂时的思路是对双方一气,两气棋窜进行分析统计,并对双打吃与征吃进行特别处理)

   3:优秀走法搜索引擎(暂时仅使用极窄窗口搜索,一种优化过的alpha-beta搜索)

   UI:

   cocos2d-x 3.2

   绘制棋盘,棋子,开始界面,背景等。

(4)吃子棋AI

鉴于吃子棋的规则,在做AI时,也容易许多。题外话,目前现在围棋的AI多为双重随机-蒙特卡罗算法之类吧,有兴趣读者可以研究下。

1.走法生成:

   走法的生成会相对容易很多,因为吃子棋大多数情况下,每一步都要紧对方的气,而少数情况只能长气逃命,因此前中期合理走法很少,而游戏很少发展至后期。

2.估值核心:

    对于棋面的判断也相对容易,不需要考虑地域与势等抽象概念,这些抽象的概念连当下计算机科学家都没有找到比较好的解决办法。但这一部分要测试非常难,要微 调很多参数,感知棋力变化。对于未发生提子的叶子结点,判断形势与输赢。1.轮到我下,对方存在一个一气的棋窜,则我胜利。2.轮到我下,对方不存在一个 一气的棋窜,而我有两个一气的棋窜,则我失败。3.轮到我下,敌方不存在一气的棋窜,若我没有1气的窜,对方可有两气棋窜,若有开始考虑,双打吃与征吃的 可能。4.同三情况考虑自己,我方仅存在一个一气窜,则考虑是否被征吃,以及双打吃。5.都没有出现,考虑一些其他的额外参数。

3.搜索引擎:PVS,如果有性能需求考虑使用置换表。


写在最后(这是一个系列文章,此写在最后仅针对本篇文章):

我曾兼职围棋入门班的助教,深知陪着4,5岁小孩子下围棋是一件很头大的事,因为他们下棋时经常会哭鼻子闹脾气刷淘气。孩子们刚入门时下得是吃子棋,下课回家都是家长陪着下,同样无论输赢都是一件头大的事,但是家长们都说孩子和电脑对战不会哭鼻子闹脾气耍淘气。

于是,我上网搜索有没有吃子棋对战软件,使家长脱离苦海,也使孩子能够专心下棋而不是哭鼻子闹脾气耍淘气,但未找到,可能是需求过少的缘故,一般孩子们下一周的吃子棋就可以下真正的围棋了。

目前,本人正在用业余时间,研发此游戏。欢迎和广大围棋爱好者,吃子棋爱好者多多交流。



posted on 2014-10-10 10:18  RonTang  阅读(3693)  评论(4编辑  收藏  举报