Files
sudoku/src/utils/utility.ts

47 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-06-06 16:05:54 +08:00
import BezierEasing from "bezier-easing"
2025-05-22 17:17:47 +08:00
import { config } from "../constants/config"
2025-05-19 19:51:17 +08:00
2025-05-28 20:29:24 +08:00
export function Utility_ConvertSecondToString(seconds: number) {
let last = seconds
2025-05-28 18:47:51 +08:00
const hour = Math.floor(last / 3600)
last = last - hour * 3600
const minite = Math.floor(last / 60)
last = last - minite * 60
2025-05-28 20:29:24 +08:00
const second = Math.floor(last)
2025-05-28 18:47:51 +08:00
function format(value: number) {
return value >= 10 ? value.toString() : (`0${value}`)
}
return `${format(hour)}:${format(minite)}:${format(second)}`
2025-05-22 17:17:47 +08:00
}
2025-05-28 18:47:51 +08:00
// 计算积分
2025-05-22 17:17:47 +08:00
export function Utility_CalculateScore(difficulty: string, second: number): number {
2025-05-28 18:47:51 +08:00
let score = 0
const currentTime = Math.min(120, second)
2025-05-28 19:15:32 +08:00
if (difficulty === config.DIFFICULTY_TYPE.Easy) {
2025-05-28 18:47:51 +08:00
score = 270 - currentTime
2025-05-28 19:15:32 +08:00
} else if (difficulty === config.DIFFICULTY_TYPE.Medium) {
2025-05-28 18:47:51 +08:00
score = 420 - currentTime * 2
2025-05-28 19:15:32 +08:00
} else if (difficulty === config.DIFFICULTY_TYPE.Hard) {
2025-05-28 18:47:51 +08:00
score = 760 - currentTime * 3
2025-05-28 19:15:32 +08:00
} else if (difficulty === config.DIFFICULTY_TYPE.Expert) {
2025-05-28 18:47:51 +08:00
score = 1120 - currentTime * 3
2025-05-28 19:15:32 +08:00
} else if (difficulty === config.DIFFICULTY_TYPE.Extreme) {
2025-05-28 18:47:51 +08:00
score = 1320 - currentTime * 4
}
// console.log("计算积分 >>>>>", difficulty, second, score)
return score
}
2025-06-06 16:05:54 +08:00
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
2025-06-10 18:24:50 +08:00
}