UNPKG

jungle-board-service

Version:
125 lines (124 loc) 5.32 kB
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;