最全五子棋禁手逻辑实现
目前已实现以下逻辑:
- 三三禁手
- 四四禁手
- 长连禁手
本项目使用 go1.15。请确保你本地安装了它们。
$ go get -u github.com/realjustice/renju_forbid
$ cat example/main.go
package main
import (
"fmt"
"github.com/realjustice/renju_forbid"
)
func main() {
// 0: 无禁手 1:三三禁手,2:四四禁手,3:长连
forbidResult := ren.CheckForbid("(;AP[WGo.js:2]FF[4]GM[1]CA[UTF-8]SZ[15];B[dd];W[];B[fd];W[];B[ec];W[];B[ee];W[];B[ed])")
// 0:无结果,1:黑胜,-1:白胜
OverResult := ren.CheckWin("(;SZ[15]AP[WGo.js:2]FF[4]GM[1]CA[UTF-8];B[dd];B[ed];B[fd];B[ec];W[];B[ee])")
// 0: 无结果,1:黑五子连珠,-1:白:五子连珠
renjuResult := ren.IsRenju("(;AP[WGo.js:2]FF[4]GM[1]CA[UTF-8]SZ[15];B[dd];W[];B[fd];W[];B[ec];W[];B[ee];W[];B[ed];W[];B[ef];W[];B[eg])")
fmt.Printf("禁手结果:%d\n", forbidResult)
fmt.Printf("对局结果:%d\n", OverResult)
fmt.Printf("五子连珠结果:%d\n", renjuResult)
}
# run example/main.go
$ go run example/main.go
可以调用下面的方法检查棋谱中是否包含禁手
result := ren.CheckForbid("your sgf")
会得到三种结果,0: 无禁手 1:三三禁手,2:四四禁手,3:长连
可以调用下面的方法判断对局是否结束
result := ren.CheckWin("your sgf")
更多细节,请参考 example。
- larry_dev/goban — 最全围棋SGF解析器
提一个 Issue 或者提交一个 Pull Request,或者发送邮件至 z_s_c_p@163.com
MIT © realjustice