以前寫的中國象棋引擎的C#源程序,可在VS2010中編譯運行,由於個人精力有限,難以完成后續的開發工作,如果誰感興趣,請關注微信公眾號(“申龍斌的程序人生”,ID:slbGTD),發送后台消息“象棋引擎”,可收到源代碼和相關資料的下載鏈接。並請告訴我你的姓名,並且如果你修改代碼后參加比賽請加上我的名字就行了。
當前完成的工作:
1)着法生成
2)簡單的alphabeta算法,支持置換表
3)可以讀取一堆PGN文件,生成開局庫
4)解析ucci命令
5)有一個對戰測試程序
6)基本的單元測試
程序當前全部是托管代碼,還沒有考慮性能優化。
整個源代碼可以編譯,有些文件有重復,以源代碼中的工程文件的為准。
除了源代碼之外,還有收集到的一些相關論文可以一起提供。
PonderNet
│ PonderNet.sln
├─BitBoardBase 本來是想用位棋盤的,后來看來一篇論文(2009.Reul.New Architectures in Computer Chess),改用17x14的數組表示法
│ BitHack64.cs
│ Board.cs
│ BoardUtil.cs
│ Board_Const.cs
│ Board_Makemove.cs
│ Fen.cs
│ Move.cs
│ MoveGenerator.cs
│ MoveGenerator_Preset.cs
│ MoveNotation.cs
│ PgnUtil.cs
│ RandomMersenneTwister.cs
│ TraceAndTestImpact.testsettings
│ Zobrist.cs
│
├─Perft 用來驗證着法程序生成的工具
│ Program.cs
│
├─Ponder.OpeningBook 用來生成開局庫的工具
│ Program.cs
│
├─PonderEngine 引擎
│ Evaluator.cs
│ MoveGenerator.cs
│ MoveGenerator_Preset.cs
│ OpeningBook.cs
│ PonderEngine.cs
│ PonderMain.cs
│ SearchTT.cs
│ SimpleSearch.cs
│ TranspositionTable.cs
│ UcciCommand.cs 能夠識別一些簡單的ucci命令
│
│
├─PonderGame 用於與其它引擎對戰的程序,也可以自己與自己對戰
│ Engine.cs
│ EngineProcess.cs
│ ExeProcess.cs
│ PonderGame.cs
│ PonderGameMain.cs
│ Settings.cs
│
├─TestBitBoardBase 單元測試,主要針對着法生成
│ BoardTest.cs
│ MoveGeneratorTest.cs
│ TestBitBoardBase.csproj
│ TestChineseChess.csproj
│
└─TestPonderEngine 單元測試,主要針對引擎的alphabeta搜索算法
MoveGeneratorTest.cs
PonderEngineTest.cs
SimpleSearchTest.cs
TestPonderEngine.csproj
UnitTest_SearchTT.cs