改进一下api体验

This commit is contained in:
shenjack 2024-05-09 00:02:13 +08:00
parent ee4e3b0215
commit ad686526eb
Signed by: shenjack
GPG Key ID: 7B1134A979775551
2 changed files with 176 additions and 15 deletions

View File

@ -21798,33 +21798,60 @@ const runner = {
return new Promise((resolve, reject) => {
let win_datas = [];
finish_trigger.on("win_rate", (run_round, win_count) => {
// 先把数据存起来
win_datas.push({round: run_round, win_count: win_count});
win_datas.push({ round: run_round, win_count: win_count });
// 如果数据长度等于 round说明数据已经全部返回
if (run_round >= target_round) {
stop_bomb = true;
resolve({score: win_count, raw_data: win_datas});
resolve({ score: win_count, raw_data: win_datas });
}
});
main(names);
});
},
win_rate_callback: (names, callback) => {
return new Promise((resolve, reject) => {
let win_datas = [];
finish_trigger.on("win_rate", (run_round, win_count) => {
win_datas.push({ round: run_round, win_count: win_count });
// 调用 callback
let result = callback(run_round, win_count);
if (!result) {
stop_bomb = true;
resolve({ score: win_count, raw_data: win_datas });
}
});
main(names);
});
},
score: (names, target_round) => {
return new Promise((resolve, reject) => {
let score_datas = [];
finish_trigger.on("score_report", (run_round, score) => {
// 先把数据存起来
score_datas.push({round: run_round, score: score});
score_datas.push({ round: run_round, score: score });
// 如果数据长度等于 round说明数据已经全部返回
if (run_round >= target_round) {
stop_bomb = true;
resolve({score: score, raw_data: score_datas});
resolve({ score: score, raw_data: score_datas });
};
});
main(names);
});
},
score_callback: (names, callback) => {
return new Promise((resolve, reject) => {
let score_datas = [];
finish_trigger.on("score_report", (run_round, score) => {
score_datas.push({ round: run_round, score: score });
// 调用 callback
let result = callback(run_round, score);
if (!result) {
stop_bomb = true;
resolve({ score: score, raw_data: score_datas });
}
});
});
},
};
if (run_env.from_code) {

View File

@ -1,18 +1,152 @@
const md5_module = require('./md5.js');
const md5_module = require("./md5.js");
/**
*
* source_plr ,
*/
type FightResult = {
message: string;
source_plr: string;
target_plr: string;
affect: string | number;
};
/**
*
*/
type WinRate = {
round: number;
win_count: number;
};
/**
*
*/
type WinRateResult = {
souce: number;
raw_data: WinRate[];
};
/**
*
* bool, true , false
*/
type WinRateCallback = (run_round: number, win_count: number) => boolean;
/**
*
*/
type Score = {
round: number;
score: number;
};
/**
*
*/
type ScoreResult = {
source: number;
raw_data: Score[];
};
/**
*
* bool, true , false
*/
type ScoreCallback = (run_round: number, score: number) => boolean;
/**
*
* @param names
* @returns
*/
async function fight(names: string): Promise<FightResult> {
// 检查一下输入是否合法
// 比如里面有没有 !test!
if (names.startsWith("!test!")) {
throw new Error("你怎么在对战输入里加 !test!(恼)\n${names}");
}
return await md5_module.fight(names);
}
/**
* /
* @param names
* @returns
*/
function test_check(names: string): boolean {
const have_test = names.startsWith("!test!");
return have_test;
}
/**
*
* @param names
* @param round
* @returns
*/
async function win_rate(names: string, round: number): Promise<WinRateResult> {
// 检查 round 是否合法
if (round <= 0) {
throw new Error("round 必须大于 0");
}
if (!test_check(names)) {
throw new Error("你怎么在胜率输入里加 !test!(恼)\n${names}");
}
return await md5_module.win_rate(names, round);
}
/**
*
* @param names
* @param callback
* @returns
*/
async function win_rate_callback(
names: string,
callback: WinRateCallback,
): Promise<WinRateResult> {
if (!test_check(names)) {
throw new Error("你怎么在胜率输入里加 !test!(恼)\n${names}");
}
return await md5_module.win_rate_callback(names, callback);
}
async function score(names: string, round: number): Promise<ScoreResult> {
// 检查 round 是否合法
if (round <= 0) {
throw new Error("round 必须大于 0");
}
if (!test_check(names)) {
throw new Error("你怎么在分数输入里加 !test!(恼)\n${names}");
}
return await md5_module.score(names, round);
}
async function score_callback(
names: string,
callback: ScoreCallback,
): Promise<ScoreResult> {
if (!test_check(names)) {
throw new Error("你怎么在分数输入里加 !test!(恼)\n${names}");
}
return await md5_module.score_callback(names, callback);
}
// 启动一个 async 函数
async function main() {
let result = await md5_module.fight("aaaaaa\nbbbbb");
const result = await md5_module.fight("aaaaaa\nbbbbb");
console.log("对战结果: ", result);
console.log("对战结果: ", result);
let win_rate = await md5_module.win_rate("!test!\n\naaaaaa\n\nbbbbb", 1000);
const win_rate = await md5_module.win_rate("!test!\n\naaaaaa\n\nbbbbb", 1000);
console.log("胜率: ", win_rate);
console.log("胜率: ", win_rate);
let score = await md5_module.score("!test!\n\naaaaaabbbb", 1000);
const score = await md5_module.score("!test!\n\naaaaaabbbb", 1000);
console.log("分数: ", score);
};
console.log("分数: ", score);
}
main();