baskin-lib
Version:
baskin robbins 31 web game library
69 lines (68 loc) • 2.54 kB
TypeScript
export interface PlayLogEntry {
player: number;
lastCall: number;
}
export declare type PlayLog = PlayLogEntry[];
/**
*
* @param playLog Current game play log.
* @param numPlayer Number of players.
* @returns Current player who need to call next number.
*/
export declare function getCurrentPlayer(playLog: PlayLog, numPlayer: number): number;
/**
*
* @param playLog Current game play log.
* @returns Last player who called number. Return `undefined` if playLog is empty.
*/
export declare function getLastPlayer(playLog: PlayLog): number | undefined;
/**
*
* @param playLog Current game play log.
* @param numEnd Number of players.
* @returns Return true if game is end. Else, return false.
*/
export declare function gameIsEnd(playLog: PlayLog, numEnd: number): boolean;
/**
*
* @param playLog Current game play log
* @returns Recently called number.
*/
export declare function getCurrentNum(playLog: PlayLog): number;
/**
*
* @param newNum Called number without regarding ending number
* @param numEnd The last number of the game
* @param playerTurn Player number on this turn
* @returns New PlayLogEntry after call
*/
export declare function makePlayLogEntry(newNum: number, numEnd: number, playerTurn: number): PlayLogEntry;
/**
*
* @param loseMat Lose matrix
* @param playLog Current game play log
* @param maxCall Maximum number of call in once
* @param numEnd The last number of the game
* @param aiTurn Player number of AI playing this turn
* @returns Updated playLog after one AI turn
*/
export declare function handleAiTurnOnce(loseMat: number[][], playLog: PlayLog, maxCall: number, numEnd: number, aiTurn: number): PlayLogEntry;
/**
*
* @param playLog Current game play log
* @param numChoose Human chose to call numbers up to `numChoose`
* @param numEnd The last number of the game
* @param playerTurn Human player turn
* @returns Updated playlog after human play. Doesn't mutate original playLog.
*/
export declare function handlePlayerTurn(playLog: PlayLog, numChoose: number, numEnd: number, playerTurn: number): PlayLog;
/**
*
* @param loseMat Lose rate matrix for all game states
* @param playLog Current game play log
* @param maxCall Maximum number of call in once
* @param numEnd The last number of the game
* @param playerTurn Human player turn
* @returns Updated playlog after ai play. Doesn't mutate original `playLog`
*/
export declare function handleAiTurns(loseMat: number[][], playLog: PlayLog, maxCall: number, numEnd: number, playerTurn: number): PlayLog;