定式

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

                //     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. 请求facebook授权时,返回错误

    在请求facebook授权时,返回如下错误:所提供的网址不被应用程序配置所接纳.:应用程序的设置不允许一个或多个所提供的链接.它必须与网站的URL或Canvas的URL相符,或该域必须是应用程序的一个 ...

  2. 《C#并发编程经典实例》笔记

    1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期 ...

  3. git学习之冲突解决办法

    1.如果本地项目和远程服务器的同一文件都有改动,那么就会产生冲突,导致git pull 失败,报错见下. 解决办法:先执行git stash指令,暂存当前的改动状态,再执行git pull指令,就可以 ...

  4. Xamarin.Android和UWP之MVVM的简单使用(二)

    0x01 前言 前面一篇,Xamarin.Android和UWP之MVVM的简单使用(一),主要讲了MvvmLight的简单使用 这篇主要讲讲MvvmCross的简单使用,例子的话,还是和上篇的一样. ...

  5. Xamarin.Android再体验之简单的登录Demo

    一.前言 在空闲之余,学学新东西 二.服务端的代码编写与部署 这里采取的方式是MVC+EF返回Json数据,(本来是想用Nancy来实现的,想想电脑太卡就不开多个虚拟机了,用用IIS部署也好) 主要是 ...

  6. C#播放MP3源代码

    代码如下: using System; using System.Runtime.InteropServices; using System.Text; using System.IO ; using ...

  7. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

  8. discuz X3.1 源代码阅读,记录代码片段

    require_once libfile('function/post'); // /source/function/function_post.php require_once libfile('p ...

  9. asp.net mvc项目自定义区域

    前言 直接上干货就是,就不废话了. 使用场景:分离模块,多站点等~~ 一.分离模块 自定义视图引擎,设置视图路径格式 项目结构图 1.Code: 在Global.asax Application_St ...

  10. Python默认版本修改

    Python默认版本修改 当电脑安装了多个版本的Python,而Shell中默认的Python不是你想要的,这个时候就需要对Python的默认版本进行修改. 在Windows中,可以通过修改环境变量的 ...