tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
89 lines • 3.82 kB
TypeScript
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