zoukankan      html  css  js  c++  java
  • x01.Weiqi.12: 定式布局

    定式

    下一步当将定式保存到数据库中,如布局中的代码所示,但其初始的代码更有利于理解。以小飞挂为例:

                    //     0
    		//   +      0       0
    		//     +
    		//
    		//   +
    		List<Pos> P_LuStar_UpFlyOne
    		{
    			get
    			{
    				var temp = new List<Pos>();
    				temp.Add(new Pos(3, 3));    // 第一步:左上星
    				temp.Add(new Pos(2, 5));    // 第二步:小飞挂
    				temp.Add(new Pos(5, 2));    // 第三步:小飞守
    				temp.Add(new Pos(1, 3));    // 第四步:小飞进角
    				temp.Add(new Pos(2, 2));    // 第五步:三三守
    				temp.Add(new Pos(2, 8));    // 第六步:拆二
    				return temp;
    			}
    		}
    

    具体使用,可参照 Board.Pattern.cs 的完整代码,其关键点,一个是四角八变换,一个是棋子颜色的控制。

    布局

    严格说,应称作全局,但保留布局这个说法,因为它的作用并没改变,其着眼点仍然是布局。这是显而易见的,你不可能整局棋都按着保存的棋谱进行。Board.Layout.cs 开头的注释说的比较清楚,复制如下:

    /**
     * Board.Layout.cs (c) 2015 by x01
     * -------------------------------
     * 1.有了定式打基础,布局也就顺理成章了。基本上是一个路数,
     *   只是第一步需调整到(3,3)位,方便变换而已。
     * 2.暂只考虑二连星。任他多路来,我只一路去,这相当合理。
     * 3.将数据库中保存的棋谱导出添加到 Layouts 中,对局足够多足够好时,
     *   棋力大进是可以预期的。
     * 4.本只准备保存布局的几步棋,但忽然发现保存整盘棋是有意义的,尤其对付
     *   gnu-go 时,因为 gnu-go 对相同棋形的反应也相同,这就为战胜它提供了
     *   可能。以二连星对二连星为例,保存 200 到 2000 黑先胜 gnu-go 的棋谱
     *   到数据库中,然后以此来对付 gnu-go,当有取胜的可能。此猜想并没验证,
     *   因为即使 200 到 2000 局棋,也需约 200 到 2000 小时方可完成。很显然,
     *   没有那么多时间去验证其可行性。
     * 5.棋形处理较弱,而不按定式布局走棋时,又不得不倚靠棋形处理,
     *   看来,棋形处理才是真正的关键。而要处理好棋形,不仅仅是棋形的问题,
     *   还有大小,死活,全局相关等诸多问题需要解决。
     */
    

    代码下载链https://github.com/chinax01/x01.Weiqi

  • 相关阅读:
    tomcat调试模式出问题的解决方法
    文本输入 的 onfucus 和 onblur
    how to choose one of compenent and control
    C# Captcha 测试 firefox 和 IE
    谈谈对GridView控件DataKeyName属性的一点认识
    Response.Redirect和Server.Transfer的区别
    select 基本常用语法
    top、postop、scrolltop、scrollHeight、offsetHeight
    onchange 和 onpropertychange区别
    try catch 和if else 语句区别细说
  • 原文地址:https://www.cnblogs.com/china_x01/p/4591153.html
Copyright © 2011-2022 走看看