定式

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

                //     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

x01.Weiqi.12: 定式布局的更多相关文章

  1. x01.Weiqi.10: 死活问题

    估计得不错,点目后,仅一个方法:UpdateMeshes5() 就完美解决了梅花六.刀把五.斗笠四.盘角曲四等死活问题.先来看看效果图: 其代码如下: void UpdateMeshes5(bool ...

  2. x01.Weiqi.9: 点目功能

    添加点目功能,虽不中,不远也.还是先看看截图吧. 确保其可行,再看一张: 其点目结果,还是比较令人满意的.这主要得益于多遍扫描,如编译器的词法分析阶段,下面的代码可以证明: private void ...

  3. x01.Weiqi.7: 调整重绘

    GitHub 谁方便谁拍,谁重要拍谁.在这个砖头满天飞的时代,一个好的生态显得尤为重要.  红颜小头发,要的很简单. 也许成绝唱,只因鱼断肠. 姚贝福娃的离去,除感叹人生无常外,活着做点有意义的事情, ...

  4. x01.Weiqi.11: 神来之笔

    在围棋中,一子两用,可谓妙手,而一子三用,则可称之为神来之笔.在解决征子问题时,一不小心,也来了个神来之笔,其代码如下: // 征子判断,p1, p2 为气,p2 为前进方向,p 为逃跑之子. boo ...

  5. x01.os.12: 在 windows 中写 OS

    在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可 ...

  6. HTML+CSS学习笔记 (12) - CSS布局模型

    标签:HTML+CSS css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是 ...

  7. ExtJS中layout的12种布局风格

    总览 extjs的容器组件都可以设置它的显示风格,它的有效值有 1. absolute,2. accordion, 3. anchor, 4. border, 5. card, 6. column, ...

  8. 前端学习笔记2017.6.12 DIV布局网页

    DIV的功能就是把网页划分成逻辑块的. 看下豆瓣东西页面的布局,我们来分析下. 按照先从上到下的原则,把这个页面分成几个块: 首先是最顶端的这个条,这是一个DIV,我们给它起个名字,叫banner 然 ...

  9. x01.Weiqi.8: 一点改进

    原来的代码全部删除,进行了深层次重构,得其意而忘其言.得意之处有二: 1.关于显示 以 StoneSize 属性为依托,在 set 中加了一句:Width = Height = m_StoneSize ...

随机推荐

  1. 一个网站完整详细的SEO优化方案

    根据自己的个人经验完成了这篇文章,希望对SEOer有点帮助,高手直接跳过,请勿喷水... 一个完整的SEO优化方案主要由四个小组组成: 一.前端/页编人员 二.内容编辑人员 三.推广人员 四.数据分析 ...

  2. [WCF编程]12.事务:事务传播

    一.事务传播概述 WCF可以跨越服务边界传递事务.这可以让服务参与到客户端事务里,客户端还可以在同一个事务里调用多个服务.客户端本身不一定是WCF服务.客户端事务是否传播到服务端可以通过绑定和操作契约 ...

  3. html中<radio>单选按钮控件标签用法解析及如何设置默认选中

    <input type="radio" name="radio" value="1">单选1 <input type=&q ...

  4. Gym 100703I---Endeavor for perfection(尺取)

    题目链接 http://codeforces.com/problemset/gymProblem/100703/I Description standard input/outputStatement ...

  5. linux下的目录结构和内容

    用了这么长时间linux系统,有时候哪个文件应该在哪还是不知道的,所以对于根下的目录结构记下: /bin bin是Binary的缩写.这个目录存放着最经常使用的命令. /boot这里存放的是启动Lin ...

  6. php实现设计模式之 迭代器模式

    <?php /*迭代器模式: 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.(行为模式) * 1.迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的 ...

  7. UnitOfWork以及其在ABP中的应用

    Unit Of Work(UoW)模式在企业应用架构中被广泛使用,它能够将Domain Model中对象状态的变化收集起来,并在适当的时候在同一数据库连接和事务处理上下文中一次性将对象的变更提交到数据 ...

  8. [转载]Javascript异步编程的4种方法

    NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用“回调”是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- http://www.r ...

  9. 原生JS:delete、in、typeof、instanceof、void详解

    delete.in.typeof.instanceof.void详解 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/doc ...

  10. SharePoint 2013 图文开发系列之网站栏

    网站栏的本质,就是一个xml的描述文件,所以创建过程,基本就是通过Feature部署一个Xml文件,然后修改Xml文件的网站栏描述. 1.添加新项目,选择SharePoint 2013 空项目,如下图 ...