Files
sudoku/src/utils/utility.ts
2025-06-10 18:24:50 +08:00

47 lines
1.6 KiB
TypeScript

import BezierEasing from "bezier-easing"
import { config } from "../constants/config"
export function Utility_ConvertSecondToString(seconds: number) {
let last = seconds
const hour = Math.floor(last / 3600)
last = last - hour * 3600
const minite = Math.floor(last / 60)
last = last - minite * 60
const second = Math.floor(last)
function format(value: number) {
return value >= 10 ? value.toString() : (`0${value}`)
}
return `${format(hour)}:${format(minite)}:${format(second)}`
}
// 计算积分
export function Utility_CalculateScore(difficulty: string, second: number): number {
let score = 0
const currentTime = Math.min(120, second)
if (difficulty === config.DIFFICULTY_TYPE.Easy) {
score = 270 - currentTime
} else if (difficulty === config.DIFFICULTY_TYPE.Medium) {
score = 420 - currentTime * 2
} else if (difficulty === config.DIFFICULTY_TYPE.Hard) {
score = 760 - currentTime * 3
} else if (difficulty === config.DIFFICULTY_TYPE.Expert) {
score = 1120 - currentTime * 3
} else if (difficulty === config.DIFFICULTY_TYPE.Extreme) {
score = 1320 - currentTime * 4
}
// console.log("计算积分 >>>>>", difficulty, second, score)
return score
}
const bezier_ease_out = BezierEasing(0.2, 0.8, 0.5, 1)
export function Utility_EaseOut(t: number, b: number, c: number, d: number) {
const p = bezier_ease_out(t / d)
return c * p + b
}
const bezier_ease_out_2 = BezierEasing(0.25, 0.1, 0.3, 1)
export function Utility_EaseOut_2(t: number, b: number, c: number, d: number) {
const p = bezier_ease_out_2(t / d)
return c * p + b
}