misskey-reversi
Version:
Misskey reversi engine
103 lines (102 loc) • 2.41 kB
TypeScript
/**
* 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;
}