UNPKG

tsgammon-core

Version:

A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui

89 lines 3.82 kB
import { DicePip } from './Dices'; import { EOGStatus } from './EOGStatus'; /** * 相対表記で表現した盤面。常に動かす側の観点になっていて、0はバーポイント、25は上がり、 * 正の数が自分の駒数となっている。内部的な盤の操作はすべてこのインターフェースを介して行い、 * 外部へ表示する際にはAbsoluteBoardで変換する */ export interface BoardState { /** 各ポイントの駒数を格納した配列。正の数は自駒、負の数は相手駒 */ points: number[]; /** 最後尾の駒の位置 */ lastPiecePos: number; /** 相手の最後尾の駒の位置 */ opponentLastPiecePos: number; /** ベアリングオフの行き先となる位置(標準は25) */ bearOffPos: number; /** 指定の位置を相手側の視点で見た時の位置に変換する(e.g. 1=>24, 6=>18, ...)*/ invertPos(pos: number): number; /** ベアリングオフできるならtrue */ isBearable: boolean; /** 各ポイントの駒数を返す。正の数は自駒、負の数は相手駒 */ piecesAt(n: number): number; /** ベアリングオフ済みの自駒数を返す */ myBornOff: number; /** ベアリングオフ済みの相手駒数を返す */ opponentBornOff: number; /** 指定されたポイントの駒をpip分進めた盤面を返す。 * ポイントに駒がなかったり、行き先がブロックされている・範囲外などの場合、自分自身が返ってくる */ movePiece(from: number, pip: DicePip): BoardState; /** 盤面を相手側視点に変換する */ revert(): BoardState; /** 盤面で自分側の駒が全て上がったかどうかを、ギャモン・バックギャモンの有無とあわせて返す。 * ギャモン・バックギャモンは純粋に自駒の配置で判断され、ジャコビールールなどは適用されない。 * 相手側が終局かどうかは影響しない。 */ eogStatus(): EOGStatus; /** * 自分のピップカウント */ myPipCount: number; /** * 相手のピップカウント */ opponentPipCount: number; /** * 終局状態に達しているならtrue */ isEndOfGame(): boolean; /** * 終局状態に達していて、かつギャモンならtrue */ isGammonish(): boolean; /** * 終局状態に達していて、かつバックギャモンならtrue */ isBackgammonishAlso(): boolean; /** * ランニングゲーム(駒同士のコンタクトがない)状態ならtrue */ isRunningGame(): boolean; /** * 自分のまだ上がっていない駒の数 */ pieceCount: number; /** * 相手のまだ上がっていない駒の数 */ opponentPieceCount: number; /** * 自分のインナーボードの開始点(標準ルールでは19) */ innerPos: number; } /** * BoardStateの実装に必要な機能で、外部には公開する必要がないものの定義 */ declare type Board = {} & BoardState; /** * 駒の配置を格納した配列から、BoardStateを生成する * * @param pieces 駒の配置(省略時は標準ルールでの開始時な配置) * @param bornOffs すでにベアリングオフした駒の数の対(順に自分、相手:省略時は0) * @param innerPos この値とそれ以降がインナーボードとなる * @param isEoGFunc 終局判定関数(終局時にtrueを返す) * @returns 盤面 */ export declare function boardState(pieces?: number[], bornOffs?: [number, number], innerPos?: number, isEoGFunc?: (board: Board) => boolean): BoardState; export {}; //# sourceMappingURL=BoardState.d.ts.map