Documentation ¶
Index ¶
- func GetFileFromCode(code string) string
- func GetFileFromX(x int) string
- func GetRankFromCode(code string) string
- func GetRankFromY(y int) string
- func GetXFromFile(file string) int
- func GetYFromRank(rank string) int
- type Board
- func (b *Board) ForeachNeumannNeighborhood(here Point, setAdjacent func(Cell_4Directions, Point))
- func (b *Board) GetColorAt(i Point) Color
- func (b *Board) GetCoordinate() *BoardCoordinate
- func (b *Board) GetGameRule() *GameRule
- func (b *Board) GetStoneAt(i Point) Stone
- func (b *Board) Init(width int, height int)
- func (b *Board) IsMasonry(point Point) bool
- func (b *Board) IsSpaceAt(point Point) bool
- func (b *Board) SetGameRule(gameRule *GameRule)
- func (b *Board) SetStoneAt(i Point, s Stone)
- type BoardCoordinate
- func (bc *BoardCoordinate) ForeachCellWithoutWall(setPoint func(Point))
- func (bc *BoardCoordinate) ForeachLikeText(setPoint func(Point), doNewline func())
- func (bc *BoardCoordinate) ForeachPayloadLocationOrderByYx(setLocation func(Point))
- func (bc *BoardCoordinate) GetBoardArea() int
- func (bc *BoardCoordinate) GetEastOf(point Point) Point
- func (bc *BoardCoordinate) GetGtpMoveFromPoint(point Point) string
- func (bc *BoardCoordinate) GetHeight() int
- func (bc *BoardCoordinate) GetMemoryArea() int
- func (bc *BoardCoordinate) GetMemoryHeight() int
- func (bc *BoardCoordinate) GetMemoryWidth() int
- func (bc *BoardCoordinate) GetNorthEastOf(point Point) Point
- func (bc *BoardCoordinate) GetNorthOf(point Point) Point
- func (bc *BoardCoordinate) GetNorthWestOf(point Point) Point
- func (bc *BoardCoordinate) GetPointFromGtpMove(gtp_move string) Point
- func (bc *BoardCoordinate) GetPointFromXy(x int, y int) Point
- func (bc *BoardCoordinate) GetRelativePointOf(dir4 Cell_4Directions) Point
- func (bc *BoardCoordinate) GetSouthEastOf(point Point) Point
- func (bc *BoardCoordinate) GetSouthOf(point Point) Point
- func (bc *BoardCoordinate) GetSouthWestOf(point Point) Point
- func (bc *BoardCoordinate) GetWestOf(point Point) Point
- func (bc *BoardCoordinate) GetWidth() int
- func (bc *BoardCoordinate) GetXyFromPoint(point Point) (int, int)
- type Cell_4Directions
- type CheckBoard
- func (cb *CheckBoard) ClearAllBitsAt(point Point)
- func (cb *CheckBoard) Contains(point Point, mark Mark) bool
- func (cb *CheckBoard) Erase(point Point, mark Mark)
- func (cb *CheckBoard) GetAllBitsAt(point Point) Mark
- func (cb *CheckBoard) Init(newBoardCoordinate BoardCoordinate)
- func (cb *CheckBoard) IsZeroAt(point Point) bool
- func (cb *CheckBoard) Overwrite(point Point, mark Mark)
- func (cb *CheckBoard) SetAllBitsAt(point Point, mark Mark)
- type Color
- type GameRule
- type Kernel
- func (k *Kernel) DoPlay(command string, logg *Logger)
- func (k *Kernel) DoSetBoard(command string, logg *Logger)
- func (k *Kernel) DoUndoPlay(command string, logg *Logger)
- func (k *Kernel) Execute(command string, logg *Logger) bool
- func (k *Kernel) FindAllRens()
- func (k *Kernel) GetLiberty(arbitraryPoint Point) (*Ren, bool)
- func (k *Kernel) GetRenToCapture(placePlay Point) (bool, [4]*Ren)
- func (k *Kernel) LoadRenDb(path string, onError func(error) bool) bool
- func (k *Kernel) Play(stoneA Stone, placePlay Point, logg *Logger, onMasonry func() bool, ...) bool
- func (k *Kernel) RefreshRenToInternal(r *Ren) bool
- func (k *Kernel) RemoveRen(ren *Ren)
- func (k *Kernel) UndoPlay() bool
- type KomiFloat
- type LibertySearchAlgorithm
- type Logger
- type Mark
- type Point
- type Position
- type PositionNumberInt
- type Record
- func (r *Record) ForeachItem(setItem func(PositionNumberInt, *RecordItem))
- func (r *Record) GetMaxPosNth() int
- func (r *Record) GetMaxPosNthFigure() int
- func (r *Record) GetPositionNumber() PositionNumberInt
- func (r *Record) IsKo(placePlay Point) bool
- func (r *Record) Push(placePlay Point, ko Point)
- func (r *Record) RemoveTail(placePlay Point)
- type RecordItem
- type Ren
- func (r *Ren) AddLocation(location Point)
- func (r *Ren) Dump() string
- func (r *Ren) ForeachLocation(setLocation func(int, Point))
- func (r *Ren) GetAdjacentColor() Color
- func (r *Ren) GetArea() int
- func (r *Ren) GetLibertyArea() int
- func (r *Ren) GetMinimumLocation() Point
- func (r *Ren) GetStone() Stone
- func (r *Ren) RefreshToExternalFile(convertLocation func(Point) string)
- type RenDb
- func (db *RenDb) Dump() string
- func (db *RenDb) GetRen(renId RenId) (*Ren, bool)
- func (db *RenDb) Init(boardWidth int, boardHeight int)
- func (db *RenDb) RefreshToExternalFile(convertLocation func(Point) string)
- func (db *RenDb) RegisterRen(positionNthFigure int, positionNumber PositionNumberInt, ren *Ren)
- func (db *RenDb) Save(path string, convertLocation func(Point) string, onError func(error) bool) bool
- type RenDbDocHeader
- type RenId
- type Stone
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetRankFromY ¶
GetRankFromY - GetYFromRank の逆関数
Parameters ---------- y : int
0 .. 98
Returns ------- rank : string
"1" .. "99"
func GetXFromFile ¶
GetXFromFile - `A` ~ `Z` を 0 ~ 24 へ変換します。 国際囲碁連盟のルールに倣い、筋の符号に `I` は使いません
Types ¶
type Board ¶
type Board struct {
// contains filtered or unexported fields
}
Board - 盤
func (*Board) ForeachNeumannNeighborhood ¶
func (b *Board) ForeachNeumannNeighborhood(here Point, setAdjacent func(Cell_4Directions, Point))
ForeachNeumannNeighborhood - [O13o__10o0] 隣接する4方向の定義
func (*Board) GetCoordinate ¶
func (b *Board) GetCoordinate() *BoardCoordinate
GetCoordinate - 盤座標取得
type BoardCoordinate ¶
type BoardCoordinate struct {
// contains filtered or unexported fields
}
BoardCoordinate - 盤座標
func (*BoardCoordinate) ForeachCellWithoutWall ¶
func (bc *BoardCoordinate) ForeachCellWithoutWall(setPoint func(Point))
ForeachCellWithoutWall - 枠や改行を含めない各セルの番地
func (*BoardCoordinate) ForeachLikeText ¶
func (bc *BoardCoordinate) ForeachLikeText(setPoint func(Point), doNewline func())
ForeachLikeText - 枠を含めた各セルの石
func (*BoardCoordinate) ForeachPayloadLocationOrderByYx ¶
func (bc *BoardCoordinate) ForeachPayloadLocationOrderByYx(setLocation func(Point))
ForeachPayloadLocationOrderByYx - 枠や改行を含めない各セルの番地。筋、段の順
func (*BoardCoordinate) GetBoardArea ¶
func (bc *BoardCoordinate) GetBoardArea() int
GetBoardArea - 枠無し盤の面積
func (*BoardCoordinate) GetEastOf ¶
func (bc *BoardCoordinate) GetEastOf(point Point) Point
GetEastOf - 東
func (*BoardCoordinate) GetGtpMoveFromPoint ¶
func (bc *BoardCoordinate) GetGtpMoveFromPoint(point Point) string
GetGtpMoveFromPoint - `GetPointFromGtpMove` の逆関数
func (*BoardCoordinate) GetMemoryArea ¶
func (bc *BoardCoordinate) GetMemoryArea() int
GetMemoryArea - 枠付き盤の面積
func (*BoardCoordinate) GetMemoryHeight ¶
func (bc *BoardCoordinate) GetMemoryHeight() int
GetMemoryWidth - 枠付きの盤の垂直一辺の交点数
func (*BoardCoordinate) GetMemoryWidth ¶
func (bc *BoardCoordinate) GetMemoryWidth() int
GetMemoryWidth - 枠付きの盤の水平一辺の交点数
func (*BoardCoordinate) GetNorthEastOf ¶
func (bc *BoardCoordinate) GetNorthEastOf(point Point) Point
GetNorthEastOf - 北東
func (*BoardCoordinate) GetNorthOf ¶
func (bc *BoardCoordinate) GetNorthOf(point Point) Point
GetNorthOf - 北
func (*BoardCoordinate) GetNorthWestOf ¶
func (bc *BoardCoordinate) GetNorthWestOf(point Point) Point
GetNorthWestOf - 北西
func (*BoardCoordinate) GetPointFromGtpMove ¶
func (bc *BoardCoordinate) GetPointFromGtpMove(gtp_move string) Point
GetPointFromGtpMove - "A7" や "J13" といった符号を Point へ変換します
* `gtp_move` - 座標の符号。 Example: "A7" や "J13"
func (*BoardCoordinate) GetPointFromXy ¶
func (bc *BoardCoordinate) GetPointFromXy(x int, y int) Point
GetPointFromXy - x,y 形式の座標を、 point (配列のインデックス)へ変換します。 point は枠を含む盤上での座標です
Parameters ---------- x : int 枠を含む盤での筋番号。 Example: 19路盤なら0~20 y : int 枠を含む盤での段番号。 Example: 19路盤なら0~20
Returns ------- point : Point 配列インデックス
func (*BoardCoordinate) GetRelativePointOf ¶
func (bc *BoardCoordinate) GetRelativePointOf(dir4 Cell_4Directions) Point
GetRelativePointOf - 4方向(東、北、西、南)の先の番地
func (*BoardCoordinate) GetSouthEastOf ¶
func (bc *BoardCoordinate) GetSouthEastOf(point Point) Point
GetSouthEastOf - 南東
func (*BoardCoordinate) GetSouthOf ¶
func (bc *BoardCoordinate) GetSouthOf(point Point) Point
GetSouthOf - 南
func (*BoardCoordinate) GetSouthWestOf ¶
func (bc *BoardCoordinate) GetSouthWestOf(point Point) Point
GetSouthWestOf - 南西
func (*BoardCoordinate) GetWestOf ¶
func (bc *BoardCoordinate) GetWestOf(point Point) Point
GetWestOf - 西
func (*BoardCoordinate) GetXyFromPoint ¶
func (bc *BoardCoordinate) GetXyFromPoint(point Point) (int, int)
GetXyFromPoint - `GetPointFromXy` の逆関数
type Cell_4Directions ¶
type Cell_4Directions int
Cell_4Directions - 東、北、西、南を指す配列のインデックスに対応
const ( Cell_East Cell_4Directions = iota Cell_North Cell_West Cell_South )
東、北、西、南を指す配列のインデックスに対応
type CheckBoard ¶
type CheckBoard struct {
// contains filtered or unexported fields
}
CheckBoard - チェック盤
func NewDirtyCheckBoard ¶
func NewDirtyCheckBoard() *CheckBoard
NewDirtyCheckBoard - 新規作成するが、初期化されていない
* このメソッドを呼び出した後に Init 関数を呼び出してほしい
func (*CheckBoard) ClearAllBitsAt ¶
func (cb *CheckBoard) ClearAllBitsAt(point Point)
ClearAllBitsAt - フラグを消す
func (*CheckBoard) Contains ¶
func (cb *CheckBoard) Contains(point Point, mark Mark) bool
Contains - 含む
func (*CheckBoard) GetAllBitsAt ¶
func (cb *CheckBoard) GetAllBitsAt(point Point) Mark
GetAllBitsAt - 指定した交点の目印を取得
func (*CheckBoard) IsZeroAt ¶
func (cb *CheckBoard) IsZeroAt(point Point) bool
IsZeroAt - 指定した交点に目印は付いていないか?
func (*CheckBoard) Overwrite ¶
func (cb *CheckBoard) Overwrite(point Point, mark Mark)
Overwrite - 上書き
func (*CheckBoard) SetAllBitsAt ¶
func (cb *CheckBoard) SetAllBitsAt(point Point, mark Mark)
SetAllBitsAt - 指定した交点に目印を設定
type GameRule ¶
type GameRule struct {
// contains filtered or unexported fields
}
GameRule - 対局ルール
func NewGameRule ¶
func NewGameRule(komi KomiFloat, maxPositionNumber PositionNumberInt) *GameRule
NewGameRule - 新規作成
func (*GameRule) GetMaxPositionNumber ¶
func (gr *GameRule) GetMaxPositionNumber() PositionNumberInt
GetMaxPositionNumber - 上限手数
type Kernel ¶
type Kernel struct { // Position - 局面 Position *Position // Record - [O12o__11o_3o0] 棋譜 Record Record // contains filtered or unexported fields }
Kernel - カーネル
func NewDirtyKernel ¶
func NewDirtyKernel(gameRule GameRule, boardWidht int, boardHeight int, maxPositionNumber PositionNumberInt, playFirst Stone) *Kernel
NewDirtyKernel - カーネルの新規作成 - 一部のメンバーは、初期化されていないので、別途初期化処理が要る
func (*Kernel) DoPlay ¶
DoPlay - 打つ
* `command` - Example: `play black A19` ........................---- ----- --- ........................0 1 2
func (*Kernel) DoSetBoard ¶
DoSetBoard - 盤面を設定する
コマンドラインの複数行入力は難しいので、ファイルから取ることにする * `command` - Example: `board_set file data/board1.txt` ........................--------- ---- --------------- ........................0 1 2
func (*Kernel) DoUndoPlay ¶
DoUndoPlay - 石を打ったのを戻す
* `command` - Example: `undo` ........................---- ........................0
func (*Kernel) FindAllRens ¶
func (k *Kernel) FindAllRens()
FindAllRens - [O23o_2o1o0] 盤上の全ての連を見つけます * 見つけた連は、連データベースへ入れます
func (*Kernel) GetLiberty ¶
GetLiberty - 呼吸点の数え上げ。連の数え上げ。 `GetOneRen` とでもいう名前の方がふさわしいが、慣習に合わせた関数名にした
Parameters ---------- * `arbitraryPoint` - 連に含まれる任意の一点
Returns ------- - *Ren is ren or nil - bool is found
func (*Kernel) GetRenToCapture ¶
GetRenToCapture - 現在、着手後の盤面とする。打ち上げられる石の連を返却
Returns ------- isExists : bool renToRemove : [4]*Ren 隣接する東、北、西、南にある石を含む連
func (*Kernel) Play ¶
func (k *Kernel) Play(stoneA Stone, placePlay Point, logg *Logger, onMasonry func() bool, onOpponentEye func() bool, onForbiddenMyEye func() bool, onKo func() bool) bool
Play - 石を打つ
Parameters ========== stoneA : Stone - placePlay : Point -
Returns ======= isOk : bool - 石を置けたら真、置けなかったら偽
func (*Kernel) RefreshRenToInternal ¶
RefreshRenToInternal - TODO 外部ファイルから入力された内容を内部状態に適用します
type LibertySearchAlgorithm ¶
type LibertySearchAlgorithm struct {
// contains filtered or unexported fields
}
LibertySearchAlgorithm - 呼吸点探索アルゴリズム
func NewLibertySearchAlgorithm ¶
func NewLibertySearchAlgorithm(board *Board, checkBoard *CheckBoard) *LibertySearchAlgorithm
NewLibertySearchAlgorithm - 新規作成
type Logger ¶
type Logger struct { // C is sugared logger for Console C *zap.SugaredLogger // J is sugared logger as JSON J *zap.SugaredLogger }
type Point ¶
type Point int
Point - 交点の座標。いわゆる配列のインデックス。枠を含む盤の左上を 0 とします
const Cell_Illegal Point = -1
IllegalZ - 石が置けない番地の目印として使用。例:UCT計算中に石が置けなかった
const Cell_Pass Point = 0
Cell_Pass - パス
type Position ¶
type Position struct { // Board - 盤 Board *Board // [O22o2o3o0] // CheckBoard - 呼吸点の探索時に使います CheckBoard *CheckBoard // CanNotPutOnMyEye - [O22o4o1o0] 自分の眼に石を置くことはできません CanNotPutOnMyEye bool }
type Record ¶
type Record struct {
// contains filtered or unexported fields
}
Record - 棋譜
func NewRecord ¶
func NewRecord(maxPositionNumber PositionNumberInt, memoryBoardArea int, playFirst Stone) *Record
NewRecord - 新規作成
* maxPositionNumber - 手数上限。配列サイズ決定のための判断材料 * memoryBoardArea - メモリー盤サイズ。配列サイズ決定のための判断材料
func (*Record) ForeachItem ¶
func (r *Record) ForeachItem(setItem func(PositionNumberInt, *RecordItem))
ForeachItem - 各要素
func (*Record) GetMaxPosNthFigure ¶
GetMaxPosNthFigure - 手数(序数)の最大値の桁数
func (*Record) GetPositionNumber ¶
func (r *Record) GetPositionNumber() PositionNumberInt
GetPositionNumber - 何手目。基数
type RecordItem ¶
type RecordItem struct {
// contains filtered or unexported fields
}
RecordItem - 棋譜の一手分
type Ren ¶
type Ren struct { // Sto - (外部ファイル向け)石 Sto string `json:"stone"` // Loc - (外部ファイル向け)石の盤上の座標符号の空白区切りのリスト Loc string `json:"locate"` // LibLoc - (外部ファイル向け)呼吸点の盤上の座標符号の空白区切りのリスト LibLoc string `json:"liberty"` // contains filtered or unexported fields }
Ren - 連,れん
func (*Ren) ForeachLocation ¶
ForeachLocation - 場所毎に
func (*Ren) GetMinimumLocation ¶
GetMinimumLocation - 最小の場所。Idとして利用することを想定
func (*Ren) RefreshToExternalFile ¶
RefreshToExternalFile - 外部ファイルに出力されてもいいように内部状態を整形します
type RenDb ¶
type RenDb struct { // Header - ヘッダー Header RenDbDocHeader `json:"header"` // 要素 Rens map[RenId]*Ren `json:"rens"` }
RenDb - 連データベース
func (*RenDb) RefreshToExternalFile ¶
RefreshToExternalFile - 外部ファイルに出力されてもいいように内部状態を整形します
func (*RenDb) RegisterRen ¶
func (db *RenDb) RegisterRen(positionNthFigure int, positionNumber PositionNumberInt, ren *Ren)
RegisterRen - 連を登録 * すでに Id が登録されているなら、上書きしない
type RenDbDocHeader ¶
type RenDbDocHeader struct { // BoardWidth - 盤の横幅 BoardWidth int `json:"boardWidth"` // BoardHeight - 盤の縦幅 BoardHeight int `json:"boardHeight"` }
RenDbDocHeader - ヘッダー
func (*RenDbDocHeader) GetBoardMemoryArea ¶
func (h *RenDbDocHeader) GetBoardMemoryArea() int
GetBoardMemoryArea - 枠付き盤の面積
func (*RenDbDocHeader) GetBoardMemoryHeight ¶
func (h *RenDbDocHeader) GetBoardMemoryHeight() int
GetBoardMemoryHeight - 枠付き盤の縦幅
func (*RenDbDocHeader) GetBoardMemoryWidth ¶
func (h *RenDbDocHeader) GetBoardMemoryWidth() int
GetBoardMemoryWidth - 枠付き盤の横幅
func (*RenDbDocHeader) Init ¶
func (h *RenDbDocHeader) Init(boardWidth int, boardHeight int)
Init - 初期化
type RenId ¶
type RenId string
RenId - 連データベースに格納される連のId - 外部ファイルの可読性を優先して数値型ではなく文字列 - 昇順に並ぶように前ゼロを付ける
type Stone ¶
type Stone uint
Stone - 石の色
func GetStoneFromChar ¶
GetStoneFromChar - 1文字与えると、Stone値を返します
Returns ------- isOk : bool stone : Stone
func GetStoneFromName ¶
GetStoneFromName - 文字列の名前を与えると、Stone値を返します
Returns ------- isOk : bool stone : Stone
func GetStoneOrDefaultFromTurn ¶
GetStoneOrDefaultFromTurn - black または white を与えると、Stone値を返します
Returns ------- stone : Stone
Source Files ¶
- o11o0_stone.go
- o11o_3o0_kernel.go
- o11o_3o_10o0_game_rule.go
- o11o_3o_11o0_position.go
- o11o_4o1o0_color.go
- o11o_4o2o1o0_ren.go
- o11o__10o2o0_logger.go
- o12o0_board_area.go
- o12o__10o1o0_point.go
- o12o__10o2o_1o1o0_board_coordinate.go
- o12o__11o1o0_board.go
- o12o__11o_2o0_record.go
- o12o__11o_2o_1o0_record_item.go
- o12o__11o__10o2o0_ren_db.go
- o12o__11o__10o5o__10o0_kernel_facade.go
- o15o__14o1o0_board_set.go
- o19o0_play.go
- o22o1o1o0_masonry.go
- o22o2o2o0_check_board.go
- o22o2o4o0_liberty.go
- o23o1o0_play_undo.go