take13

package
v0.0.0-...-f2ec8e9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2021 License: MIT Imports: 16 Imported by: 0

README

take13

利きボードを使った 利き分布を利用した評価関数を作ってる途中だぜ(^~^)

次は深さ2を目指すかだぜ(^~^)
1手詰めも欲しいけど(^~^)
処理時間を計測したいぜ(^~^)
ベータカットも欲しいなあ(^~^)
moveのうち、移動先と成りだけの move_end を作って genmove で返そ(^~^)

計測

usi
position startpos

dev
playout
# depthEnd=2のとき 36.898604 seconds

Test

position startpos
pos
control layer 0
control layer 10

# 先手から見て
watercolor 0 10 26 27 28
control layer 26
control layer 28

# 後手から見て
watercolor 10 0 26 27 28
control layer 26
control layer 28

Documentation

Overview

評価関数

駒の価値

利きのテスト

Index

Constants

View Source
const (
	// 先手用
	CONTROL_LAYER_SUM1             = ControlLayerT(0) // 先手の利きボード
	CONTROL_LAYER_DIFF1_ROOK_OFF   = ControlLayerT(1) // 飛の利き 負(差分)
	CONTROL_LAYER_DIFF1_BISHOP_OFF = ControlLayerT(2) // 角の利き 負(差分)
	CONTROL_LAYER_DIFF1_LANCE_OFF  = ControlLayerT(3) // 香の利き 負(差分)
	CONTROL_LAYER_DIFF1_LANCE_ON   = ControlLayerT(4) // 香の利き 正(差分)
	CONTROL_LAYER_DIFF1_BISHOP_ON  = ControlLayerT(5) // 角の利き 正(差分)
	CONTROL_LAYER_DIFF1_ROOK_ON    = ControlLayerT(6) // 飛の利き 正(差分)
	// 先手用/開発時のみ
	CONTROL_LAYER_DIFF1_PUT      = ControlLayerT(7) // 打とか指すとか
	CONTROL_LAYER_DIFF1_REMOVE   = ControlLayerT(8)
	CONTROL_LAYER_DIFF1_CAPTURED = ControlLayerT(9)
	// 後手用
	CONTROL_LAYER_SUM2             = ControlLayerT(10) // 後手の利きボード
	CONTROL_LAYER_DIFF2_ROOK_OFF   = ControlLayerT(11)
	CONTROL_LAYER_DIFF2_BISHOP_OFF = ControlLayerT(12)
	CONTROL_LAYER_DIFF2_LANCE_OFF  = ControlLayerT(13)
	CONTROL_LAYER_DIFF2_LANCE_ON   = ControlLayerT(14)
	CONTROL_LAYER_DIFF2_BISHOP_ON  = ControlLayerT(15)
	CONTROL_LAYER_DIFF2_ROOK_ON    = ControlLayerT(16)
	// 後手用/開発時のみ
	CONTROL_LAYER_DIFF2_PUT      = ControlLayerT(17) // 打とか指すとか
	CONTROL_LAYER_DIFF2_REMOVE   = ControlLayerT(18)
	CONTROL_LAYER_DIFF2_CAPTURED = ControlLayerT(19)
	// テスト(先手用)
	CONTROL_LAYER_TEST_COPY1          = ControlLayerT(20) // テスト用
	CONTROL_LAYER_TEST_ERROR1         = ControlLayerT(21) // テスト用
	CONTROL_LAYER_TEST_RECALCULATION1 = ControlLayerT(22) // テスト用 再計算
	// テスト(後手用)
	CONTROL_LAYER_TEST_COPY2          = ControlLayerT(23)
	CONTROL_LAYER_TEST_ERROR2         = ControlLayerT(24)
	CONTROL_LAYER_TEST_RECALCULATION2 = ControlLayerT(25)
	// 評価値用
	CONTROL_LAYER_EVAL1 = ControlLayerT(26) // 評価関数用
	CONTROL_LAYER_EVAL2 = ControlLayerT(27) // 評価関数用
	CONTROL_LAYER_EVAL3 = ControlLayerT(28) // 評価関数用
	// 計測
	CONTROL_LAYER_DIFF_TYPE_SIZE_RELEASE = ControlLayerT(6)
	CONTROL_LAYER_DIFF_TYPE_SIZE_DEV     = ControlLayerT(9)
	CONTROL_LAYER_DIFF1_START            = ControlLayerT(1)
	CONTROL_LAYER_DIFF1_END_RELEASE      = CONTROL_LAYER_DIFF1_START + CONTROL_LAYER_DIFF_TYPE_SIZE_RELEASE // この数を含まない。テスト用も含まない
	CONTROL_LAYER_DIFF1_END_DEV          = CONTROL_LAYER_DIFF1_START + CONTROL_LAYER_DIFF_TYPE_SIZE_DEV     // この数を含まない。テスト用も含まない
	CONTROL_LAYER_DIFF2_START            = ControlLayerT(11)
	CONTROL_LAYER_DIFF2_END_RELEASE      = CONTROL_LAYER_DIFF2_START + CONTROL_LAYER_DIFF_TYPE_SIZE_RELEASE // この数を含まない。テスト用も含まない
	CONTROL_LAYER_DIFF2_END_DEV          = CONTROL_LAYER_DIFF2_START + CONTROL_LAYER_DIFF_TYPE_SIZE_DEV     // この数を含まない。テスト用も含まない
	CONTROL_LAYER_ALL_SIZE               = ControlLayerT(29)                                                // この数を含まない
)
View Source
const (
	// 持ち駒を打つ 100~115
	// 先手飛打
	SQ_K1         = Square(100)
	SQ_R1         = Square(101)
	SQ_B1         = Square(102)
	SQ_G1         = Square(103)
	SQ_S1         = Square(104)
	SQ_N1         = Square(105)
	SQ_L1         = Square(106)
	SQ_P1         = Square(107)
	SQ_K2         = Square(108)
	SQ_R2         = Square(109)
	SQ_B2         = Square(110)
	SQ_G2         = Square(111)
	SQ_S2         = Square(112)
	SQ_N2         = Square(113)
	SQ_L2         = Square(114)
	SQ_P2         = Square(115)
	SQ_HAND_START = SQ_K1
	SQ_HAND_END   = SQ_P2 + 1 // この数を含まない
)
View Source
const (
	PIECE_TYPE_EMPTY = PieceType(0) // 空マス
	PIECE_TYPE_K     = PieceType(1)
	PIECE_TYPE_R     = PieceType(2)
	PIECE_TYPE_B     = PieceType(3)
	PIECE_TYPE_G     = PieceType(4)
	PIECE_TYPE_S     = PieceType(5)
	PIECE_TYPE_N     = PieceType(6)
	PIECE_TYPE_L     = PieceType(7)
	PIECE_TYPE_P     = PieceType(8)
	PIECE_TYPE_PR    = PieceType(9)
	PIECE_TYPE_PB    = PieceType(10)
	PIECE_TYPE_PS    = PieceType(11)
	PIECE_TYPE_PN    = PieceType(12)
	PIECE_TYPE_PL    = PieceType(13)
	PIECE_TYPE_PP    = PieceType(14)
)
View Source
const (
	POS_LAYER_MAIN  = PosLayerT(0)
	POS_LAYER_COPY  = PosLayerT(1) // テスト用
	POS_LAYER_DIFF1 = PosLayerT(2) // テスト用
	POS_LAYER_DIFF2 = PosLayerT(3) // テスト用
	POS_LAYER_SIZE  = 4
)
View Source
const (
	// 空マス
	ZEROTH = Phase(0)
	// 先手
	FIRST = Phase(1)
	// 後手
	SECOND = Phase(2)
)
View Source
const (
	PIECE_EMPTY = iota
	PIECE_K1
	PIECE_R1
	PIECE_B1
	PIECE_G1
	PIECE_S1
	PIECE_N1
	PIECE_L1
	PIECE_P1
	PIECE_PR1
	PIECE_PB1
	PIECE_PS1
	PIECE_PN1
	PIECE_PL1
	PIECE_PP1
	PIECE_K2
	PIECE_R2
	PIECE_B2
	PIECE_G2
	PIECE_S2
	PIECE_N2
	PIECE_L2
	PIECE_P2
	PIECE_PR2
	PIECE_PB2
	PIECE_PS2
	PIECE_PN2
	PIECE_PL2
	PIECE_PP2
)

View Source
const (
	// 持ち駒を打つ 0~15 (Index)
	HAND_K1_IDX    = 0
	HAND_R1_IDX    = 1 // 先手飛打
	HAND_B1_IDX    = 2
	HAND_G1_IDX    = 3
	HAND_S1_IDX    = 4
	HAND_N1_IDX    = 5
	HAND_L1_IDX    = 6
	HAND_P1_IDX    = 7
	HAND_K2_IDX    = 8
	HAND_R2_IDX    = 9
	HAND_B2_IDX    = 10
	HAND_G2_IDX    = 11
	HAND_S2_IDX    = 12
	HAND_N2_IDX    = 13
	HAND_L2_IDX    = 14
	HAND_P2_IDX    = 15
	HAND_SIZE      = 16
	HAND_TYPE_SIZE = 8
	HAND_IDX_START = HAND_K1_IDX
	HAND_IDX_END   = HAND_SIZE // この数を含まない
)
View Source
const (
	PCLOC_K1 = iota
	PCLOC_K2
	PCLOC_R1
	PCLOC_R2
	PCLOC_B1
	PCLOC_B2
	PCLOC_L1
	PCLOC_L2
	PCLOC_L3
	PCLOC_L4
	PCLOC_START = 0
	PCLOC_END   = 10 //この数を含まない
	PCLOC_SIZE  = 10
)

Piece location

View Source
const (
	BUILD_DEV     = BuildT(0)
	BUILD_RELEASE = BuildT(1)
)
View Source
const (
	CuttingNone        = CuttingType(0)
	CuttingKingCapture = CuttingType(1)
)
View Source
const (
	// Author - 囲碁思考エンジンの作者名だぜ☆(^~^)
	Author = "Satoshi Takahashi"
)
View Source
const BOARD_SIZE = 100

00~99

View Source
const MAX_VALUE = 32767
View Source
const MOVES_SIZE = 512

電竜戦が一番長いだろ(^~^)

View Source
const PHASE_ARRAY_SIZE = 2

[0], [1]

View Source
const RESIGN_MOVE = Move(0)

0 は 投了ということにするぜ(^~^)

View Source
const RESIGN_MOVE_END = MoveEnd(0)

0 は 投了ということにするぜ(^~^)

View Source
const RESIGN_VALUE = -32768
View Source
const SQUARE_EMPTY = Square(0)

マス番号を指定しないことを意味するマス番号

Variables

View Source
var OneDigitNumbers = [10]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}

position sfen の盤のスペース数に使われますN

Functions

func AddControlBishop

func AddControlBishop(pPos *Position,
	pPh1_CB *ControlBoard, pPh2_CB *ControlBoard, sign int16, excludeFrom Square)

AddControlBishop - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます

func AddControlLance

func AddControlLance(pPos *Position,
	pPh1_CB *ControlBoard, pPh2_CB *ControlBoard, sign int16, excludeFrom Square)

AddControlLance - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます

func AddControlRook

func AddControlRook(pPos *Position,
	pPh1_CB *ControlBoard, pPh2_CB *ControlBoard, sign int16, excludeFrom Square)

AddControlRook - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます

func CountAllPieces

func CountAllPieces(pPos *Position) [8]int

CountAllPieces - 駒の数を確認するぜ(^~^)

func CountErrorCountLists

func CountErrorCountLists(countList1 [8]int, countList2 [8]int) int

CountErrorCountLists - 数えた駒の枚数を比較します

func EvalControlVal

func EvalControlVal(pPosSys *PositionSystem) int16

EvalControlVal - 葉局面での利きの評価

func EvalMaterial

func EvalMaterial(piece Piece) int16

EvalMaterial - 駒の価値。開発者のむずでょが勝手に決めた(^~^)

func MainLoop

func MainLoop()

MainLoop - 開始。

func NifuFirst

func NifuFirst(pPos *Position, file Square) bool

NifuFirst - 先手で二歩になるか筋調べ

func NifuSecond

func NifuSecond(pPos *Position, file Square) bool

NifuSecond - 後手で二歩になるか筋調べ

func OnBoard

func OnBoard(sq Square) bool

OnBoard - 盤上なら真

func OnHands

func OnHands(sq Square) bool

OnHands - 持ち駒なら真

func ShowAllPiecesCount

func ShowAllPiecesCount(pPos *Position)

ShowAllPiecesCount - 駒の枚数表示

func ShuffleBoard

func ShuffleBoard(pPosSys *PositionSystem, pPos *Position)

ShuffleBoard - 盤上の駒、持ち駒をシャッフルします ゲーム中にはできない動きをするので、利きの計算は無視します。 最後に利きは再計算します

func SumAbsControl

func SumAbsControl(pPosSys *PositionSystem, ph1_c ControlLayerT, ph2_c ControlLayerT) [2]int

SumAbsControl - 利きテーブルの各マスを絶対値にし、その総和を返します

func TestControl

func TestControl(pPosSys *PositionSystem, pPos *Position) (bool, string)

TestControl

func ValidateSq

func ValidateSq(sq Square)

マス番号が正常値でなければ強制終了させます

func ValidateThereArePieceIn

func ValidateThereArePieceIn(pPos *Position, sq Square)

func WaterColor

func WaterColor(pCB1 *ControlBoard, pCB2 *ControlBoard, pCB3 *ControlBoard, pCB4 *ControlBoard, pCB5 *ControlBoard)

WaterColor - 水で薄めたような評価値にします pCB3 = 0 pCB4 = 0 pCB5 = 0 pCB1 - pCB2 = pCB3 pCB3 - pCB4 = pCB5

Types

type BuildT

type BuildT int

開発 or リリース モード

type ControlBoard

type ControlBoard struct {
	// 表示用の名前
	Title string
	// マスへの利き数、または差分、さらには評価値が入っています
	Board1 [BOARD_SIZE]int16
}

ControlBoard - 利きボード

func ControllBoardFromPhase

func ControllBoardFromPhase(
	phase Phase, pPh1_CB *ControlBoard, pPh2_CB *ControlBoard) *ControlBoard

func NewControlBoard

func NewControlBoard(title string) *ControlBoard

NewControlBoard - 利きボード生成

func (*ControlBoard) AddControl

func (pCB *ControlBoard) AddControl(sq_list []Square, from Square, sign int16)

AddControl - 盤上のマスを指定することで、そこにある駒の利きを調べて、利きの差分テーブルの値を増減させます

func (*ControlBoard) Clear

func (pCB *ControlBoard) Clear()

Clear - 利きボードのクリアー

type ControlBoardSystem

type ControlBoardSystem struct {
	// マスへの利き数、または差分が入っています。デバッグ目的で無駄に分けてるんだけどな(^~^)
	PBoards [CONTROL_LAYER_ALL_SIZE]*ControlBoard
}

ControlBoardSystem - 利きボード・システム

func NewControlBoardSystem

func NewControlBoardSystem() *ControlBoardSystem

func (*ControlBoardSystem) ClearControlDiff

func (pCtrlBrdSys *ControlBoardSystem) ClearControlDiff(buildType BuildT)

ClearControlDiff - 利きの差分テーブルをクリアーするぜ(^~^)

func (*ControlBoardSystem) ClearControlLayer1

func (pCtrlBrdSys *ControlBoardSystem) ClearControlLayer1(ph1_c ControlLayerT, ph2_c ControlLayerT)

ClearControlLayer - 利きボードのクリアー

func (*ControlBoardSystem) DiffControl

func (pCtrlBrdSys *ControlBoardSystem) DiffControl(c1 ControlLayerT, c2 ControlLayerT, c3 ControlLayerT)

DiffControl - 利きテーブルの差分計算

func (*ControlBoardSystem) MergeControlDiff

func (pCtrlBrdSys *ControlBoardSystem) MergeControlDiff(buildType BuildT)

MergeControlDiff - 利きの差分を解消するぜ(^~^)

func (*ControlBoardSystem) RecalculateControl

func (pCtrlBrdSys *ControlBoardSystem) RecalculateControl(
	pPos *Position, ph1_c1 ControlLayerT, ph2_c1 ControlLayerT)

RecalculateControl - 利きの再計算

type ControlLayerT

type ControlLayerT int

利きテーブル・インデックス型

type CuttingType

type CuttingType int

type EngineConf

type EngineConf struct {
	Profile Profile
}

EngineConf - Tomlファイル。

func LoadEngineConf

func LoadEngineConf(path string) (*EngineConf, error)

LoadEngineConf - ゲーム設定ファイルを読み込みます。

type Move

type Move uint16

Move - 指し手

15bit で表せるはず(^~^) .pdd dddd dsss ssss

1~7bit: 移動元(0~127) 8~14bit: 移動先(0~127) 15bit: 成(0~1)

func GenMoveList

func GenMoveList(pPosSys *PositionSystem, pPos *Position) []Move

GenMoveList - 現局面の指し手のリスト。合法手とは限らないし、全ての合法手を含むとも限らないぜ(^~^)

func NewMoveValue

func NewMoveValue() Move

func NewMoveValue2

func NewMoveValue2(src_sq Square, dst_sq Square) Move

NewMoveValue2 - 初期値として 移動元マス、移動先マスを指定してください TODO 成、不成も欲しいぜ(^~^)

func ParseMove

func ParseMove(command string, i *int, phase Phase) (Move, error)

ParseMove - 指し手コマンドを解析

func Search(pPosSys *PositionSystem) Move

Search - 探索部

func (Move) GetDestination

func (move Move) GetDestination() Square

GetDestination - 移動元マス 0011 1111 1000 0000 (Mask) 0x3f80 .pdd dddd dsss ssss

func (Move) GetPromotion

func (move Move) GetPromotion() bool

GetPromotion - 成 0100 0000 0000 0000 (Mask) 0x4000 .pdd dddd dsss ssss

func (Move) GetSource

func (move Move) GetSource() Square

GetSource - 移動元マス 0000 0000 0111 1111 (Mask) 0x007f .pdd dddd dsss ssss

func (Move) ReplaceDestination

func (move Move) ReplaceDestination(sq Square) Move

ReplaceDestination - 移動先マス 1100 0000 0111 1111 (Clear) 0xc07f .pdd dddd dsss ssss

func (Move) ReplacePromotion

func (move Move) ReplacePromotion(promotion bool) Move

ReplacePromotion - 成 0100 0000 0000 0000 (Stand) 0x4000 1011 1111 1111 1111 (Clear) 0xbfff .pdd dddd dsss ssss

func (Move) ReplaceSource

func (move Move) ReplaceSource(sq Square) Move

ReplaceSource - 移動元マス 1111 1111 1000 0000 (Clear) 0xff80 .pdd dddd dsss ssss

func (Move) ToCode

func (move Move) ToCode() string

ToCode - SFEN の moves の後に続く指し手に使える文字列を返します

type MoveEnd

type MoveEnd uint8

MoveEnd - 移動先と成り

pddd dddd

1~7bit: 移動先(0~127) 8bit: 成(0~1)

func GenControl

func GenControl(pPos *Position, from Square) []MoveEnd

GenControl - 利いているマスの一覧を返します。動けるマスではありません。 成らないと移動できないが、成れば移動できるマスがあるので、移動先と成りの2つセットで返します。 TODO 成る、成らないも入れたいぜ(^~^)

func NewMoveEndValue

func NewMoveEndValue() MoveEnd

func NewMoveEndValue2

func NewMoveEndValue2(dst_sq Square, promote bool) MoveEnd

NewMoveEndValue2 - 初期値として 移動元マス、成り を指定してください

func (MoveEnd) GetDestination

func (moveEnd MoveEnd) GetDestination() Square

GetDestination - 移動先マス 0111 1111 (Mask) 0x7f pddd dddd

func (MoveEnd) GetPromotion

func (moveEnd MoveEnd) GetPromotion() bool

GetPromotion - 成 1000 0000 (Mask) 0x80 pddd dddd

func (MoveEnd) ReplaceDestination

func (moveEnd MoveEnd) ReplaceDestination(sq Square) MoveEnd

ReplaceDestination - 移動先マス 1000 0000 (Clear) 0x80 pddd dddd

func (MoveEnd) ReplacePromotion

func (moveEnd MoveEnd) ReplacePromotion(promotion bool) MoveEnd

ReplacePromotion - 成 1000 0000 (Stand) 0x80 0111 1111 (Clear) 0x7f pddd dddd

func (MoveEnd) ToString

func (moveEnd MoveEnd) ToString() string

ToString - 確認用の文字列

type Phase

type Phase byte

1:先手 2:後手

func FlipPhase

func FlipPhase(phase Phase) Phase

FlipPhase - 先後を反転します

func Who

func Who(piece Piece) Phase

Who - 駒が先手か後手か空升かを返します

type Piece

type Piece uint8

先後付きの駒

func Demote

func Demote(piece Piece) Piece

Demote - 成っている駒を、成っていない駒に戻します

func PieceFrom

func PieceFrom(piece string) Piece

PieceFrom - 文字列

func PieceFromPhPt

func PieceFromPhPt(phase Phase, pieceType PieceType) Piece

PieceFromPhPt - 駒作成。空マスは作れません

func Promote

func Promote(piece Piece) Piece

Promote - 成ります

func (Piece) ToCode

func (pc Piece) ToCode() string

ToCode - 文字列

type PieceType

type PieceType byte

先後のない駒種類

func What

func What(piece Piece) PieceType

What - 先後のない駒種類を返します。

func WhatHand

func WhatHand(hand Square) PieceType

WhatHand - 持ち駒のマス番号から、先後なしの駒種類を返します

type PosLayerT

type PosLayerT int

盤レイヤー・インデックス型

type Position

type Position struct {
	// Go言語で列挙型めんどくさいんで文字列で(^~^)
	// [19] は 1九、 [91] は 9一(^~^)反時計回りに90°回転した将棋盤の状態で入ってるぜ(^~^)想像しろだぜ(^~^)
	Board [BOARD_SIZE]Piece
	// 駒の場所
	// [0]先手玉 [1]後手玉 [2:3]飛 [4:5]角 [6:9]香
	PieceLocations [PCLOC_SIZE]Square
	// 持ち駒の数だぜ(^~^)玉もある(^~^) K, R, B, G, S, N, L, P, k, r, b, g, s, n, l, p
	Hands1 [HAND_SIZE]int

	// 先手から見た駒得評価値
	MaterialValue int16
}

Position - 局面 TODO 利きボードも含めたい

func NewPosition

func NewPosition() *Position

func (*Position) GetPieceLocation

func (pPos *Position) GetPieceLocation(index int) Square

func (*Position) Hetero

func (pPos *Position) Hetero(from Square, to Square) bool

Hetero - 移動元と移動先の駒を持つプレイヤーが異なれば真。移動先が空マスでも真 持ち駒は指定してはいけません。 Homo の逆だぜ(^~^)片方ありゃいいんだけど(^~^)

func (*Position) Homo

func (pPos *Position) Homo(from Square, to Square) bool

Homo - 移動元と移動先の駒を持つプレイヤーが等しければ真。移動先が空なら偽 持ち駒は指定してはいけません。

func (*Position) IsEmptySq

func (pPos *Position) IsEmptySq(sq Square) bool

IsEmptySq - 空きマスなら真。持ち駒は偽

func (*Position) Sprint

func (pPos *Position) Sprint(phase Phase, startMovesNum int, offsetMovesIndex int, moves_text string) string

Print - 局面出力(^q^)

func (*Position) SprintLocation

func (pPos *Position) SprintLocation() string

SprintLocation - あの駒どこにいんの?を表示

type PositionSystem

type PositionSystem struct {
	// 開発モードフラグ。デフォルト値:真。 'usi' コマンドで解除
	BuildType BuildT
	// 局面
	PPosition [POS_LAYER_SIZE]*Position

	// 利きボード・システム
	PControlBoardSystem *ControlBoardSystem

	// 開始局面の時点で何手目か(^~^)これは表示のための飾りのようなものだぜ(^~^)
	StartMovesNum int
	// 開始局面から数えて何手目か(^~^)0から始まるぜ(^~^)
	OffsetMovesIndex int
	// 指し手のリスト(^~^)
	// 1手目は[0]へ、512手目は[511]へ入れろだぜ(^~^)
	Moves [MOVES_SIZE]Move
	// 取った駒のリスト(^~^)アンドゥ ムーブするときに使うだけ(^~^)指し手のリストと同じ添え字を使うぜ(^~^)
	CapturedList [MOVES_SIZE]Piece
	// contains filtered or unexported fields
}

PositionSystem - 局面にいろいろな機能を付けたもの

func NewPositionSystem

func NewPositionSystem() *PositionSystem

func (*PositionSystem) DoMove

func (pPosSys *PositionSystem) DoMove(pPos *Position, move Move)

DoMove - 一手指すぜ(^~^)

func (*PositionSystem) Dump

func (pPosSys *PositionSystem) Dump() string

Dump - 内部状態を全部出力しようぜ(^~^)?

func (*PositionSystem) FlipPhase

func (pPosSys *PositionSystem) FlipPhase()

FlipPhase - フェーズをひっくり返すぜ(^~^)

func (*PositionSystem) GetPhase

func (pPosSys *PositionSystem) GetPhase() Phase

GetPhase - フェーズ

func (*PositionSystem) ReadPosition

func (pPosSys *PositionSystem) ReadPosition(pPos *Position, command string)

ReadPosition - 局面を読み取ります。マルチバイト文字は含まれていないぜ(^q^)

func (*PositionSystem) SprintControl

func (pPosSys *PositionSystem) SprintControl(c ControlLayerT) string

SprintControl - 利き数ボード出力(^q^)

Parameters ---------- * `c` - 利き数ボードのレイヤー番号(^~^)

func (*PositionSystem) SprintDiff

func (pPosSys *PositionSystem) SprintDiff(b1 PosLayerT, b2 PosLayerT) string

Print - 2局面の比較用画面出力(^q^)

func (*PositionSystem) SprintRecord

func (pPosSys *PositionSystem) SprintRecord() string

SprintRecord - 棋譜表示(^~^)

func (*PositionSystem) SprintSfenResignation

func (pPosSys *PositionSystem) SprintSfenResignation(pPos *Position) string

SprintSfen - SFEN文字列返せよ(^~^)投了図を返すぜ(^~^)棋譜の部分を捨てるぜ(^~^)

func (*PositionSystem) UndoMove

func (pPosSys *PositionSystem) UndoMove(pPos *Position)

UndoMove - 棋譜を頼りに1手戻すぜ(^~^)

type Profile

type Profile struct {
	Name   string
	Author string
}

Profile - Profile 区画。

type Square

type Square uint32

マス番号 00~99,100~113

func File

func File(sq Square) Square

File - マス番号から筋(列)を取り出します

func MoveEndListToControlList

func MoveEndListToControlList(moveEndList []MoveEnd) []Square

MoveEndListToControlList - 移動先、成りのリストを、移動先のリストに変換します

func Rank

func Rank(sq Square) Square

Rank - マス番号から段(行)を取り出します

func SquareFrom

func SquareFrom(file Square, rank Square) Square

From - 筋と段からマス番号を作成します

type Variables

type Variables struct {
	// Log - ロガー。
	Log l.Logger
	// Chat - チャッター。 標準出力とロガーを一緒にしただけです。
	Chat l.Chatter
	// StderrChat - チャッター。 標準エラー出力とロガーを一緒にしただけです。
	StderrChat l.StderrChatter
}

Variables - グローバル変数。

var G Variables

G - グローバル変数。思い切った名前。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL