UNPKG

misskey-reversi

Version:
103 lines (102 loc) 2.41 kB
/** * true ... 黒 * false ... 白 */ export declare type Color = boolean; export declare type MapPixel = 'null' | 'empty'; export declare type Options = { isLlotheo: boolean; canPutEverywhere: boolean; loopedBoard: boolean; }; export declare type Undo = { /** * 色 */ color: Color; /** * どこに打ったか */ pos: number; /** * 反転した石の位置の配列 */ effects: number[]; /** * ターン */ turn: Color; }; /** * リバーシエンジン */ export default class Reversi { map: MapPixel[]; mapWidth: number; mapHeight: number; board: Color[]; turn: Color; opts: Options; prevPos: number; prevColor: Color; private logs; /** * ゲームを初期化します */ constructor(map: string[], opts: Options); /** * 黒石の数 */ readonly blackCount: number; /** * 白石の数 */ readonly whiteCount: number; /** * 黒石の比率 */ readonly blackP: number; /** * 白石の比率 */ readonly whiteP: number; transformPosToXy(pos: number): number[]; transformXyToPos(x: number, y: number): number; /** * 指定のマスに石を打ちます * @param color 石の色 * @param pos 位置 */ put(color: Color, pos: number): void; private calcTurn(); undo(): void; /** * 指定した位置のマップデータのマスを取得します * @param pos 位置 */ mapDataGet(pos: number): MapPixel; /** * 打つことができる場所を取得します */ canPutSomewhere(color: Color): number[]; /** * 指定のマスに石を打つことができるかどうかを取得します * @param color 自分の色 * @param pos 位置 */ canPut(color: Color, pos: number): boolean; /** * 指定のマスに石を置いた時の、反転させられる石を取得します * @param color 自分の色 * @param pos 位置 */ effects(color: Color, pos: number): number[]; /** * ゲームが終了したか否か */ readonly isEnded: boolean; /** * ゲームの勝者 (null = 引き分け) */ readonly winner: Color; }