计分引擎

五种计分模式(GAME_POINT / ACCUMULATIVE / TIMED)+ 让分 + 双打发球轮转。参数全部从 scoring_profiles.params 读取,不写死。

计分制 得分序列 计时脚本

① 参数回显(来自 params 字段)

参数值来源
target50params[target]
segments5params[segments]
typeACCUMULATIVEparams.type
flow 触发MID_TARGET、PRE_MATCH

② 逐分录入与判定

分比分发球事件
11 : 0A/0/左SERVE_RIGHT
22 : 0A/0/右SERVE_RIGHT
33 : 0A/0/左SERVE_RIGHT
44 : 0A/0/右SERVE_RIGHT
55 : 0A/0/左SERVE_RIGHT
66 : 0A/0/右SERVE_RIGHT
77 : 0A/0/左SERVE_RIGHT
88 : 0A/0/右SERVE_RIGHT
99 : 0A/0/左SERVE_RIGHT
1010 : 0A/1/右SERVE_RIGHT
1111 : 0A/1/左SERVE_RIGHT
1212 : 0A/1/右SERVE_RIGHT
1313 : 0A/1/左SERVE_RIGHT
1414 : 0A/1/右SERVE_RIGHT
1515 : 0A/1/左SERVE_RIGHT
1616 : 0A/1/右SERVE_RIGHT
1717 : 0A/1/左SERVE_RIGHT
1818 : 0A/1/右SERVE_RIGHT
1919 : 0A/1/左SERVE_RIGHT
2020 : 0A/0/右SERVE_RIGHT
2121 : 0A/0/左SERVE_RIGHT
2222 : 0A/0/右SERVE_RIGHT
2323 : 0A/0/左SERVE_RIGHT
2424 : 0A/0/右SERVE_RIGHT
2525 : 0A/0/左CHANGE_ENDS
2626 : 0A/0/右SERVE_RIGHT
2727 : 0A/0/左SERVE_RIGHT
2828 : 0A/0/右SERVE_RIGHT
2929 : 0A/0/左SERVE_RIGHT
3030 : 0A/1/右SERVE_RIGHT
3131 : 0A/1/左SERVE_RIGHT
3232 : 0A/1/右SERVE_RIGHT
3333 : 0A/1/左SERVE_RIGHT
3434 : 0A/1/右SERVE_RIGHT
3535 : 0A/1/左SERVE_RIGHT
3636 : 0A/1/右SERVE_RIGHT
3737 : 0A/1/左SERVE_RIGHT
3838 : 0A/1/右SERVE_RIGHT
3939 : 0A/1/左SERVE_RIGHT
4040 : 0A/0/右SERVE_RIGHT
4141 : 0A/0/左SERVE_RIGHT
4242 : 0A/0/右SERVE_RIGHT
4343 : 0A/0/左SERVE_RIGHT
4444 : 0A/0/右SERVE_RIGHT
4545 : 0A/0/左SERVE_RIGHT
4646 : 0A/0/右SERVE_RIGHT
4747 : 0A/0/左SERVE_RIGHT
4848 : 0A/0/右SERVE_RIGHT
4949 : 0A/0/左SERVE_RIGHT
5050 : 0A/0/右SERVE_RIGHT

③ 边界用例一键演示

A侧 B侧

④ 让分展示(起始比分)

该计分制(ACCUMULATIVE)不适用让分

⑤ 事件流

序事件关键点
1LEAD_INTERVAL{"trigger": "PRE_MATCH", "sec": 20}
2SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
3SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
4SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
5SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
6SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
7SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
8SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
9SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
10SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
11SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
12SUBSTITUTE{"segment_no": 2, "on_a": "P2", "on_b": "Q2"}
13SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true, "after_sub": true}
14SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
15SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
16SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
17SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
18SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
19SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
20SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
21SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
22SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
23SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
24SUBSTITUTE{"segment_no": 3, "on_a": "P1", "on_b": "Q1"}
25SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true, "after_sub": true}
26SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
27SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
28SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
29SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
30SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
31CHANGE_ENDS{"points": 25, "trigger": "MID_TARGET"}
32SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
33SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
34SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
35SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
36SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
37SUBSTITUTE{"segment_no": 4, "on_a": "P2", "on_b": "Q2"}
38SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true, "after_sub": true}
39SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
40SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
41SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
42SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
43SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
44SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
45SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
46SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
47SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
48SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": true}
49SUBSTITUTE{"segment_no": 5, "on_a": "P1", "on_b": "Q1"}
50SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true, "after_sub": true}
51SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
52SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
53SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
54SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
55SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
56SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
57SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
58SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
59SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
60SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}

⑥ 统计

A 50 : 0 B · 局/段 4 · 事件 60  ·  written=false(本次只算未写库)
整场结束:A 胜 · ACCUM_REACH
← 返回首页  |  阶段注册表  |  分组+淘汰