tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
55 lines (50 loc) • 1.6 kB
text/typescript
import { formatDices } from './formatDices'
import { formatAbsMoves, MoveFormatDirection } from './formatAbsMove'
import { Ply } from '../Ply'
/**
* 一手番でのチェッカープレイの内容を文字列に変換する
*
* ex) Roll 31: Moves 17/20 19/20
*
* @param ply 一手番でのチェッカープレイ内容
* @param direction ムーブの表記方法
* @returns 変換後の文字列
*/
export function formatPly(
ply: Omit<Ply, 'isRed'>,
direction: MoveFormatDirection = MoveFormatDirection.ABSOLUTE_INV
): string {
if (ply.dices.length === 0) {
return ''
}
const roll = formatDices(ply.dices)
const moves =
ply.moves.length === 0
? ''
: `Moves ${formatAbsMoves(ply.moves, direction).join(' ')}`
return `Roll ${roll} ${moves}`
}
/**
* 一手番でのチェッカープレイの内容を簡潔な文字列に変換する
*
* ex) 31:17/20 19/20
*
* @param ply 一手番でのチェッカープレイ内容
* @param direction ムーブの表記方法
* @param fmtDoublet ゾロ目を短縮表記(e.g. 1 1 => 1(4))する場合はtrue
* @param labelNoMove
* @returns 変換後の文字列
*/
export function formatPlyAbbr(
ply: Omit<Ply, 'isRed'>,
direction: MoveFormatDirection = MoveFormatDirection.RELATIVE_DEC,
fmtDoublet = true,
labelNoMove = ''
) {
if (ply.dices.length === 0) {
return ''
}
const roll = formatDices(ply.dices, fmtDoublet)
const moves = formatAbsMoves(ply.moves, direction, labelNoMove).join(' ')
return `${roll}: ${moves}`
}