目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O22o5o0] 任意の連の打ち上げ
連載の目次
Step [O22o5o0] 任意の連の打ち上げ - RemoveRen 関数作成
Step [O22o5o1o0] ファイル編集 - kernel_facade.go
👇 以下の既存ファイルを編集してほしい
📂 kifuwarabe-uec14
├── 📂 data
│ └── 📄 board1.txt
├── 📂 kernel
│ ├── 📂 play_rule
│ ├── 📄 board_area.go
│ ├── 📄 board_coord.go
│ ├── 📄 o12o__11o1o0_board.go
│ ├── 📄 check_board.go
│ ├── 📄 color.go
│ ├── 📄 go.mod
│ ├── 📄 go.sum
👉 │ ├── 📄 kernel_facade.go
│ ├── 📄 kernel.go
│ ├── 📄 liberty.go
│ ├── 📄 logger.go
│ ├── 📄 masonry.go
│ ├── 📄 play.go
│ ├── 📄 o12o__10o1o0_point.go
│ ├── 📄 ren.go
│ └── 📄 stone.go
├── 📄 .gitignore
├── 📄 engine_config.go
├── 📄 engine.toml
├── 📄 go.mod
├── 📄 go.work
└── 📄 main.go
// RemoveRen - 石の連を打ち上げます
func (k *Kernel) RemoveRen(ren *Ren) {
// 空点をセット
var setLocation = func(i int, location Point) {
k.Board.SetStoneAt(location, Space)
}
// 場所毎に
ren.ForeachLocation(setLocation)
}
Step [O22o5o2o0] コマンド実装 - kernel.go ファイル
👇 以下の既存ファイルを編集してほしい
📂 kifuwarabe-uec14
├── 📂 data
│ └── 📄 board1.txt
├── 📂 kernel
│ ├── 📂 play_rule
│ ├── 📄 board_area.go
│ ├── 📄 board_coord.go
│ ├── 📄 o12o__11o1o0_board.go
│ ├── 📄 check_board.go
│ ├── 📄 color.go
│ ├── 📄 go.mod
│ ├── 📄 go.sum
│ ├── 📄 kernel_facade.go
👉 │ ├── 📄 kernel.go
│ ├── 📄 liberty.go
│ ├── 📄 logger.go
│ ├── 📄 masonry.go
│ ├── 📄 play.go
│ ├── 📄 o12o__10o1o0_point.go
│ ├── 📄 ren.go
│ └── 📄 stone.go
├── 📄 .gitignore
├── 📄 engine_config.go
├── 📄 engine.toml
├── 📄 go.mod
├── 📄 go.work
└── 📄 main.go
👇 がんばって、 Execute メソッドに挿入してほしい
// ...略...
// この下にコマンドを挟んでいく
// -------------------------
// ...略...
// * アルファベット順になる位置に、以下のケース文を挿入
case "remove_ren": // [O22o5o2o0]
// Example: `remove_ren B2`
var coord = tokens[1]
var point = k.Board.coordinate.GetPointFromGtpMove(coord)
var ren, isFound = k.GetLiberty(point)
if isFound {
k.RemoveRen(ren)
logg.C.Infof("=\n")
logg.J.Infow("ok")
return true
}
logg.C.Infof("? not found ren coord:%s%\n", coord)
logg.J.Infow("error not found ren", "coord", coord)
return false
// ...略...
// この上にコマンドを挟んでいく
// -------------------------
// ...略...
Step [O22o5o3o0] 動作確認
👇 以下のコマンドをコピーして、ターミナルに貼り付けてほしい
Input:
go run .
これで、思考エンジン内の入力待機ループに入った
👇 以下のコマンドをコピーして、ターミナルに貼り付けてほしい
Input:
board_set file data/board1.txt
remove_ren B2
Output > Console:
[2022-09-17 12:17:02] # remove_ren B2
[2022-09-17 12:17:02] =