UNPKG

tsshogi

Version:

TypeScript library for Shogi (Japanese chess)

117 lines (116 loc) 3.02 kB
import { PieceType } from "./piece"; import { Color } from "./color"; /** * 持ち駒(読み取り専用) */ export interface ImmutableHand { /** * 持ち駒の枚数を取得します。 * @param pieceType */ count(pieceType: PieceType): number; /** * 駒の種類ごとにハンドラーを呼び出します。 * @param handler */ forEach(handler: (pieceType: PieceType, n: number) => void): void; /** * 持ち駒の種類と枚数の一覧を取得します。 */ readonly counts: { type: PieceType; count: number; }[]; /** * 先手の持ち駒に対してSFEN形式の文字列を取得します。 */ readonly sfenBlack: string; /** * 後手の持ち駒に対してSFEN形式の文字列を取得します。 */ readonly sfenWhite: string; /** * SFEN形式の文字列を取得します。 * @param color */ formatSFEN(color: Color): string; } /** * 持ち駒 */ export declare class Hand { private pieces; constructor(); /** * 持ち駒の種類と枚数の一覧を取得します。 */ get counts(): { type: PieceType; count: number; }[]; /** * 持ち駒の枚数を取得します。 * @param pieceType */ count(pieceType: PieceType): number; /** * 持ち駒の枚数を設定します。 * @param pieceType * @param count */ set(pieceType: PieceType, count: number): void; /** * 持ち駒を追加します。 * @param pieceType * @param n */ add(pieceType: PieceType, n: number): number; /** * 持ち駒を減らします。 * @param pieceType * @param n */ reduce(pieceType: PieceType, n: number): number; /** * 駒の種類ごとにハンドラーを呼び出します。 * @param handler */ forEach(handler: (pieceType: PieceType, n: number) => void): void; /** * 先手の持ち駒に対してSFEN形式の文字列を取得します。 */ get sfenBlack(): string; /** * 後手の持ち駒に対してSFEN形式の文字列を取得します。 */ get sfenWhite(): string; /** * SFEN形式の文字列を取得します。 * @param color */ formatSFEN(color: Color): string; /** * SFEN形式の文字列を取得します。 * @param black * @param white */ static formatSFEN(black: Hand, white: Hand): string; /** * 指定した文字列が正しい持ち駒のSFENであるかどうかを判定します。 * @param sfen */ static isValidSFEN(sfen: string): boolean; /** * 持ち駒のSFENを解析します。 * @param sfen */ static parseSFEN(sfen: string): { black: Hand; white: Hand; } | null; /** * 別のオブジェクトからコピーします。 * @param hand */ copyFrom(hand: Hand): void; }