程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> x01.Weiqi.12: 定式布局,x01.weiqi.12定式

x01.Weiqi.12: 定式布局,x01.weiqi.12定式

編輯:C#入門知識

x01.Weiqi.12: 定式布局,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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved