jungle-board-service
Version:
Jungle board service
125 lines (124 loc) • 5.32 kB
TypeScript
export declare type Board = string[][];
export declare type AllPossibleMoves = {
[key: string]: BoardDelta[];
};
export interface BoardDelta {
row: number;
col: number;
}
export interface IState {
board: Board;
delta?: BoardDelta;
}
export declare const ROWS = 9;
export declare const COLS = 7;
export declare const BlackTraps: BoardDelta[];
export declare const WhiteTraps: BoardDelta[];
export declare const BlackDen: BoardDelta;
export declare const WhiteDen: BoardDelta;
export declare const RiverPos: BoardDelta[];
export declare const PlayerSymbol: {
B: string;
W: string;
};
export declare const Structure: {
Den: string;
Trap: string;
};
export declare const Animal: {
Elephant: string;
Lion: string;
Tiger: string;
Leopard: string;
Wolf: string;
Dog: string;
Cat: string;
Rat: string;
};
export declare const PieceName: {
L: string;
R: string;
BDen: string;
BTrap: string;
BElephant: string;
BLion: string;
BTiger: string;
BLeopard: string;
BWolf: string;
BDog: string;
BCat: string;
BRat: string;
WDen: string;
WTrap: string;
WElephant: string;
WLion: string;
WTiger: string;
WLeopard: string;
WWolf: string;
WDog: string;
WCat: string;
WRat: string;
};
export declare function getEmptyBoard(): Board;
export declare function getInitialBoard(): Board;
export declare function getAnimalLevel(animal: string): number;
export declare function getPieceKind(piece: string): string;
export declare function getOpponentTurn(playerTurn: string): string;
export declare function isOutBoard({ row, col }: BoardDelta): boolean;
export declare function isInRiver(delta: BoardDelta): boolean;
export declare function isInWTrap(delta: BoardDelta): boolean;
export declare function isInBTrap(delta: BoardDelta): boolean;
export declare function isWDen(delta: BoardDelta): boolean;
export declare function isBDen(delta: BoardDelta): boolean;
export declare function isLand(delta: BoardDelta): boolean;
export declare function isOwnDen(playerTurn: string, delta: BoardDelta): boolean;
export declare function isOpponent(board: Board, delta: BoardDelta): boolean;
/**
* Return true if the position has no chess piece
*/
export declare function noChessPiece(board: Board, delta: BoardDelta): boolean;
/**
* Return true if the position has player's own chess piece
*/
export declare function isOwnChessPiece(board: Board, playerTurn: string, delta: BoardDelta): boolean;
export declare function isOwnTrap(playerTurn: string, delta: BoardDelta): boolean;
/**
* Return true if there's a rat in the river when lion or tiger wants to fly through
*/
export declare function isRatOnWay(board: Board, deltaFrom: BoardDelta, deltaTo: BoardDelta): boolean;
/**
* Return true if can move (for final compare)
*/
export declare function canMoveHelper(board: Board, playerTurn: string, deltaFrom: BoardDelta, deltaTo: BoardDelta): boolean;
export declare function canLandAnimalMove(board: Board, playerTurn: string, deltaFrom: BoardDelta, deltaTo: BoardDelta): boolean;
export declare function canFlyAnimalMove(board: Board, playerTurn: string, deltaFrom: BoardDelta, deltaTo: BoardDelta): boolean;
export declare function canSwimAnimalMove(board: Board, playerTurn: string, deltaFrom: BoardDelta, deltaTo: BoardDelta): boolean;
export declare function getLandAnimalPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getFlyAnimalPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getSwimPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getElephantPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getLionPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getTigerPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getLeopardPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getWolfPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getDogPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getCatPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getRatPossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare function getPiecePossibleMoves(board: Board, playerTurn: string, deltaFrom: BoardDelta): BoardDelta[];
export declare const getPlayersPieces: (board: Board) => {
B: string[];
W: string[];
};
export declare function getWinner(board: Board): string;
export declare function makeMove(board: Board, deltaFrom: BoardDelta, deltaTo: BoardDelta): {
prevBoard: Board;
nextBoard: Board;
winner: string;
};
/**
* moves: {
* BLion: [{ row: 0, col: 1 }, { row: 5, col: 7 }],
* BCat: [{ row: 1, col: 1 }, { row: 1, col: 2 }],
* }
*/
export declare function getAllMoves(board: Board, playerTurn: string): AllPossibleMoves;