Documentation ¶
Overview ¶
駒の価値
利きボード
利きのテスト
Index ¶
- Constants
- Variables
- func CountAllPieces(pPos *Position) [8]int
- func CountErrorCountLists(countList1 [8]int, countList2 [8]int) int
- func EvalMaterial(piece l03.Piece) int16
- func FlipPhase(phase l03.Phase) l03.Phase
- func GenMoveList(pPos *Position) []l03.Move
- func GetControlLayerName(layer int) string
- func MainLoop()
- func NifuFirst(pPos *Position, file l03.Square) bool
- func NifuSecond(pPos *Position, file l03.Square) bool
- func OnBoard(sq l03.Square) bool
- func OnHands(sq l03.Square) bool
- func Search(pPos *Position) l03.Move
- func ShowAllPiecesCount(pPos *Position)
- func ShuffleBoard(pPos *Position)
- func SprintBoard(pPos *Position) string
- func SquareFrom(file l03.Square, rank l03.Square) l03.Square
- func SumAbsControl(pPos *Position, layer1 int) [2]int
- func TestControl(pPos *Position) (bool, string)
- type MoveEnd
- type Position
- func (pPos *Position) AddControlBishop(layer int, sign int8, excludeFrom l03.Square)
- func (pPos *Position) AddControlDiff(layer int, from l03.Square, sign int8)
- func (pPos *Position) AddControlLance(layer int, sign int8, excludeFrom l03.Square)
- func (pPos *Position) AddControlRook(layer int, sign int8, excludeFrom l03.Square)
- func (pPos *Position) ClearControlDiff()
- func (pPos *Position) ClearControlLayer(layer int)
- func (pPos *Position) DiffControl(layer1 int, layer2 int, layer3 int)
- func (pPos *Position) DoMove(move l03.Move)
- func (pPos *Position) Dump() string
- func (pPos *Position) FlipPhase()
- func (pPos *Position) GetLocationOfLongPiece(index int) l03.Square
- func (pPos *Position) GetPhase() l03.Phase
- func (pPos *Position) Hetero(from l03.Square, to l03.Square) bool
- func (pPos *Position) Homo(from l03.Square, to l03.Square) bool
- func (pPos *Position) IsEmptySq(sq l03.Square) bool
- func (pPos *Position) MergeControlDiff()
- func (pPos *Position) ReadPosition(command string)
- func (pPos *Position) RecalculateControl(layer1 int)
- func (pPos *Position) SprintControl(phase l03.Phase, layer int) string
- func (pPos *Position) SprintRecord() string
- func (pPos *Position) SprintSfen() string
- func (pPos *Position) UndoMove()
Constants ¶
const ( CONTROL_LAYER_SUM = iota CONTROL_LAYER_DIFF_ROOK_OFF CONTROL_LAYER_DIFF_BISHOP_OFF CONTROL_LAYER_DIFF_LANCE_OFF CONTROL_LAYER_DIFF_PUT // 打とか指すとか CONTROL_LAYER_DIFF_REMOVE CONTROL_LAYER_DIFF_CAPTURED CONTROL_LAYER_DIFF_LANCE_ON CONTROL_LAYER_DIFF_BISHOP_ON CONTROL_LAYER_DIFF_ROOK_ON CONTROL_LAYER_TEST_COPY // テスト用 CONTROL_LAYER_TEST_ERROR // テスト用 CONTROL_LAYER_TEST_RECALCULATION // テスト用 再計算 CONTROL_LAYER_DIFF_START = 1 CONTROL_LAYER_DIFF_END = 10 // この数を含まない。テスト用も含まない CONTROL_LAYER_ALL_SIZE = 13 // この数を含まない )
const RESIGN_MOVE_END = MoveEnd(0)
0 は 投了ということにするぜ(^~^)
Variables ¶
var App l01.Lesson01App
App - アプリケーション変数の宣言
var HandPieceArray = [l03.HAND_SIZE]l03.Piece{ l03.PIECE_K1, l03.PIECE_R1, l03.PIECE_B1, l03.PIECE_G1, l03.PIECE_S1, l03.PIECE_N1, l03.PIECE_L1, l03.PIECE_P1, l03.PIECE_K2, l03.PIECE_R2, l03.PIECE_B2, l03.PIECE_G2, l03.PIECE_S2, l03.PIECE_N2, l03.PIECE_L2, l03.PIECE_P2, }
Convert hand index to piece
var OneDigitNumbers = [10]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
position sfen の盤のスペース数に使われますN
Functions ¶
func CountErrorCountLists ¶
CountErrorCountLists - 数えた駒の枚数を比較します
func EvalMaterial ¶
EvalMaterial - 駒の価値。開発者のむずでょが勝手に決めた(^~^)
func GenMoveList ¶
GenMoveList - 現局面の指し手のリスト。合法手とは限らないし、全ての合法手を含むとも限らないぜ(^~^)
func GetControlLayerName ¶
GetControlLayerName - 利きボードのレイヤーの名前
func ShuffleBoard ¶
func ShuffleBoard(pPos *Position)
ShuffleBoard - 盤上の駒、持ち駒をシャッフルします ゲーム中にはできない動きをするので、利きの計算は無視します。 最後に利きは再計算します
func SquareFrom ¶
From - 筋と段からマス番号を作成します
func SumAbsControl ¶
SumAbsControl - 利きテーブルの各マスを絶対値にし、その総和を返します
Types ¶
type MoveEnd ¶
type MoveEnd uint8
MoveEnd - 移動先と成り
pddd dddd
1~7bit: 移動先(0~127) 8bit: 成(0~1)
func GenMoveEnd ¶
GenMoveEnd - 利いているマスの一覧を返します。動けるマスではありません。
func NewMoveEnd ¶
NewMoveEnd - 移動先マス、成りの有無 を指定してください
func (MoveEnd) Destructure ¶
Destructure
移動先マス 0111 1111 (Mask) 0x7f pddd dddd
成 1000 0000 (Mask) 0x80 pddd dddd
type Position ¶
type Position struct { // Go言語で列挙型めんどくさいんで文字列で(^~^) // [19] は 1九、 [91] は 9一(^~^)反時計回りに90°回転した将棋盤の状態で入ってるぜ(^~^)想像しろだぜ(^~^) Board [l03.BOARD_SIZE]l03.Piece // 玉と長い利きの駒の場所。長い利きを消すのに使う // [0]先手玉 [1]後手玉 [2:3]飛 [4:5]角 [6:9]香 PieceLocations [l07.PCLOC_SIZE]l03.Square // マスへの利き数、または差分が入っています。デバッグ目的で無駄に分けてるんだけどな(^~^) // 利きテーブル [0]先手 [1]後手 // [0] 利き // [1] 飛の利き引く(差分) // [2] 角の利き引く(差分) // [3] 香の利き引く(差分) // [4] ムーブ用(差分) // [5] ムーブ用(差分) // [6] ムーブ用(差分) // [7] 香の利き戻す(差分) // [8] 角の利き戻す(差分) // [9] 飛の利き戻す(差分) // [10] テスト用 // [11] テスト用 // [12] テスト用(再計算) ControlBoards [2][CONTROL_LAYER_ALL_SIZE][l03.BOARD_SIZE]int8 // 持ち駒の数だぜ(^~^) R, B, G, S, N, L, P, r, b, g, s, n, l, p Hands []int // 開始局面の時点で何手目か(^~^)これは表示のための飾りのようなものだぜ(^~^) StartMovesNum int // 開始局面から数えて何手目か(^~^)0から始まるぜ(^~^) OffsetMovesIndex int // 指し手のリスト(^~^) // 1手目は[0]へ、512手目は[511]へ入れろだぜ(^~^) Moves [l02.MOVES_SIZE]l03.Move // 取った駒のリスト(^~^)アンドゥ ムーブするときに使うだけ(^~^)指し手のリストと同じ添え字を使うぜ(^~^) CapturedList [l02.MOVES_SIZE]l03.Piece // contains filtered or unexported fields }
Position - 局面
func NewPosition ¶
func NewPosition() *Position
func (*Position) AddControlBishop ¶
AddControlBishop - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます
func (*Position) AddControlDiff ¶
AddControlDiff - 盤上のマスを指定することで、そこにある駒の利きを調べて、利きの差分テーブルの値を増減させます
func (*Position) AddControlLance ¶
AddControlLance - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます
func (*Position) AddControlRook ¶
AddControlRook - 長い利きの駒の利きを調べて、利きの差分テーブルの値を増減させます
func (*Position) ClearControlDiff ¶
func (pPos *Position) ClearControlDiff()
ClearControlDiff - 利きの差分テーブルをクリアーするぜ(^~^)
func (*Position) ClearControlLayer ¶
func (*Position) DiffControl ¶
DiffControl - 利きテーブルの差分計算
func (*Position) GetLocationOfLongPiece ¶
GetLongPiece - 長い利きの駒の場所を取得
func (*Position) Hetero ¶
Hetero - 移動元と移動先の駒を持つプレイヤーが異なれば真。移動先が空マスでも真 持ち駒は指定してはいけません。 Homo の逆だぜ(^~^)片方ありゃいいんだけど(^~^)
func (*Position) MergeControlDiff ¶
func (pPos *Position) MergeControlDiff()
MergeControlDiff - 利きの差分を解消するぜ(^~^)
func (*Position) ReadPosition ¶
ReadPosition - 局面を読み取ります。マルチバイト文字は含まれていないぜ(^q^)
func (*Position) RecalculateControl ¶
RecalculateControl - 利きの再計算
func (*Position) SprintControl ¶
SprintControl - 利き数ボード出力(^q^)
Parameters ---------- * `layer` - 利き数ボードのレイヤー番号(^~^)
func (*Position) SprintRecord ¶
SprintRecord - 棋譜表示(^~^)
func (*Position) SprintSfen ¶
SprintSfen - SFEN文字列返せよ(^~^)