tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
125 lines • 4.51 kB
TypeScript
import { CubeState } from './CubeState';
import { StakeConf } from './StakeConf';
import { EOGStatus } from './EOGStatus';
import { Score } from './Score';
/**
* マッチ中のスコア他、クロフォードの有無などの状況を表す型
*/
export declare type MatchState = MatchStateInPlay | MatchStateEoG;
declare type _MatchState = {
/**
* マッチの長さ、0の場合は無制限
*/
matchLength: number;
/**
* ゲーム開始時点でのスコア
*/
scoreBefore: Score;
/**
* 現時点(ゲーム進行中)、または更新後(ゲーム終了後)のスコア
*/
score: Score;
/**
* スコアに関するルール設定
*/
stakeConf: StakeConf;
/**
* 進行中、または直前に終了したゲームがクロフォードゲームならtrue
*/
isCrawford: boolean;
};
/**
* ゲームが進行中の時のスコアを表す型
*/
export declare type MatchStateInPlay = _MatchState & {
isEoG: false;
};
/**
* ゲームが終了した時点で、その前後のスコアを表す型
*/
export declare type MatchStateEoG = _MatchState & {
isEoG: true;
/**
* ゲームにより獲得した点数
*/
stake: Score;
/**
* 終了後のスコア
*/
scoreAfter: Score;
/**
* 終局状態
*/
eogStatus: EOGStatus;
/**
* マッチが決着しているならtrue
*/
isEoM: boolean;
/**
* 次ゲームがクロフォードゲームならtrue
*/
isCrawfordNext: boolean;
};
/**
* 無制限のマッチゲームを開始する
*
* @param scoreBefore 開始時点での両プレイヤーのスコア
* @param jacobyRule ジャコビールールを適用する場合はtrue
* @returns
*/
export declare function matchStateForUnlimitedMatch(scoreBefore?: Score, jacobyRule?: boolean): MatchStateInPlay;
/**
* ポイントマッチを開始する。
*
* @param matchLength マッチの長さ
* @param scoreBefore 開始時点での両プレイヤーのスコア
* @param isCrawford 次ゲームをクロフォードとするならtrue。スコアとマッチの長さについてのチェックは行わない
* @returns
*/
export declare function matchStateForPointMatch(matchLength: number, scoreBefore?: Score, isCrawford?: boolean): MatchStateInPlay;
/**
* 現在のマッチ状態で、isRedで指定されたプレイヤーについてキューブアクション可能かどうかを返す
*
* @param matchState マッチの状況
* @param cubeValue キューブの値
* @param isRed Redについて確認するならtrue / Whiteならfalse
* @returns
*/
export declare function shouldSkipCubeAction(matchState: MatchState, cubeValue: number, isRed: boolean): boolean;
/**
* 現在のマッチの状態で、キューブが最大値に達しているかどうかをキューブの状態から判定する(したがって、クロフォードは影響しない)。
*
* shouldSkipCubeAction()とは、プレイヤーの指定を必要としないことと、クロフォードを含めない点で異なっている。
*
* (これは、キューブが使えない理由があるのはキューブ状態かクロフォードルールかを呼び出し側で把握するために判定から除外した)。
*
* @param matchState マッチの状態
* @param cubeState キューブの状態
* @returns
*/
export declare function isCubeMaxForMatch(matchState: MatchState, cubeState: CubeState): boolean;
/**
* ゲーム終了時のマッチ状態を生成する
* @param matchState マッチ状態
* @param stake 獲得したスコア
* @param eogStatus 終局状態
* @returns
*/
export declare function matchStateEoG(matchState: MatchState, stake: Score, eogStatus: EOGStatus): MatchStateEoG;
/**
* 終局時のマッチ状態から、終局直前のマッチ状態を生成する。
*
* これは、記録を遡って再開する時、終局状態を解除するために使用している。
*
* @param matchState 終局時のマッチ状態
* @returns
*/
export declare function matchStateLastGame(matchState: MatchStateEoG): MatchStateInPlay;
/**
* 終局時のマッチ状態から、次のゲームを開始したマッチ状態を生成する
* @param matchState 終局時のマッチ状態
* @returns
*/
export declare function matchStateNewGame(matchState: MatchStateEoG): MatchStateInPlay;
export {};
//# sourceMappingURL=MatchState.d.ts.map