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
x01.Weiqi.12: 定式布局的更多相关文章
- x01.Weiqi.10: 死活问题
估计得不错,点目后,仅一个方法:UpdateMeshes5() 就完美解决了梅花六.刀把五.斗笠四.盘角曲四等死活问题.先来看看效果图: 其代码如下: void UpdateMeshes5(bool ...
- x01.Weiqi.9: 点目功能
添加点目功能,虽不中,不远也.还是先看看截图吧. 确保其可行,再看一张: 其点目结果,还是比较令人满意的.这主要得益于多遍扫描,如编译器的词法分析阶段,下面的代码可以证明: private void ...
- x01.Weiqi.7: 调整重绘
GitHub 谁方便谁拍,谁重要拍谁.在这个砖头满天飞的时代,一个好的生态显得尤为重要. 红颜小头发,要的很简单. 也许成绝唱,只因鱼断肠. 姚贝福娃的离去,除感叹人生无常外,活着做点有意义的事情, ...
- x01.Weiqi.11: 神来之笔
在围棋中,一子两用,可谓妙手,而一子三用,则可称之为神来之笔.在解决征子问题时,一不小心,也来了个神来之笔,其代码如下: // 征子判断,p1, p2 为气,p2 为前进方向,p 为逃跑之子. boo ...
- x01.os.12: 在 windows 中写 OS
在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可 ...
- HTML+CSS学习笔记 (12) - CSS布局模型
标签:HTML+CSS css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是 ...
- ExtJS中layout的12种布局风格
总览 extjs的容器组件都可以设置它的显示风格,它的有效值有 1. absolute,2. accordion, 3. anchor, 4. border, 5. card, 6. column, ...
- 前端学习笔记2017.6.12 DIV布局网页
DIV的功能就是把网页划分成逻辑块的. 看下豆瓣东西页面的布局,我们来分析下. 按照先从上到下的原则,把这个页面分成几个块: 首先是最顶端的这个条,这是一个DIV,我们给它起个名字,叫banner 然 ...
- x01.Weiqi.8: 一点改进
原来的代码全部删除,进行了深层次重构,得其意而忘其言.得意之处有二: 1.关于显示 以 StoneSize 属性为依托,在 set 中加了一句:Width = Height = m_StoneSize ...
随机推荐
- Apworks框架实战(二):开始使用
要使用Apworks进行应用程序开发,您需要安装Visual Studio 2012以上的版本(以下简称Visual Studio 2012+),从Apworks 2.5开始,需要Micrsoft.N ...
- js 与JQuery显示及隐藏方法
虽然以后两种方式都能让文本信息隐藏和显示 第一种文本隐藏以后还是会占居位置, 第二种则不会占位置. <p id="p1">这是一段文本.</p> <i ...
- Linux Cmd Tool 系列之—history & search command history
History cmd is for list Bash's log of the historical cmd you typed 1. List last n commands history n ...
- jgGrid中的editrules使用函数来进行验证
jgGrid中的editrules 用于设置一些用于可编辑列的colModel的额外属性,大多数的时候是用来在提交到服务器之前验证用户的输入合法性的.比如editrules:{edithidden:t ...
- 三道Javascript的练习题
有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为: A.x<10B. x<=10C.x<20D.x<=20 ...
- React-Native性能优化点
shouldComponentUpdate 确保组件在渲染之后不需要再更新的,即静态组件,尽量在其中增加shouldComponentUpdate方法,防止二次消耗所产生的性能消耗 shouldCom ...
- Linux安全基础:shell及一些基础命令
1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...
- Android Do not keep activities选项分析
Android Do not keep activities选项分析 Developer Options里面有一项: Do not keep activities -> 不保留Activitie ...
- windows下安装web服务器
有条件下还是在linux下部署.window上真心问题挺多的. 推荐安装Visual-NMP,轻量级.组件升级方面等. Nginx绑定IPv4和IPv6的方法 listen 80; listen [: ...
- Android工程师常见面试题集
本文汇总了朋友同事在面试过程中被经常问道的一些问题,讲解不详细,有需要特别了解的可以留言告诉我.持续更新中…… 1.接口回调机制 ①定义一个接口,定义接口中的方法: ②在数据产生的地方持有接口,并提供 ...