计分引擎

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

计分制 得分序列 计时脚本

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

参数值来源
points31params[points]
deuce_at30params[deuce_at]
cap35params[cap]
cap_ruleLEAD2_THEN_GOLDENparams[cap_rule]
decider_atNoneparams[decider_at]
games1params[games]
typeGAME_POINTparams.type
flow 触发LEAD_REACH、PRE_MATCH

② 逐分录入与判定

分比分发球事件
126 : 6B/0/右SERVE_RIGHT
137 : 6A/1/左SERVE_RIGHT
147 : 7B/1/左SERVE_RIGHT
158 : 7A/0/右SERVE_RIGHT
168 : 8B/0/右SERVE_RIGHT
179 : 8A/1/左SERVE_RIGHT
189 : 9B/1/左SERVE_RIGHT
1910 : 9A/0/右SERVE_RIGHT
2010 : 10B/0/右SERVE_RIGHT
2111 : 10A/1/左SERVE_RIGHT
2211 : 11B/1/左SERVE_RIGHT
2312 : 11A/0/右SERVE_RIGHT
2412 : 12B/0/右SERVE_RIGHT
2513 : 12A/1/左SERVE_RIGHT
2613 : 13B/1/左SERVE_RIGHT
2714 : 13A/0/右SERVE_RIGHT
2814 : 14B/0/右SERVE_RIGHT
2915 : 14A/1/左SERVE_RIGHT
3015 : 15B/1/左SERVE_RIGHT
3116 : 15A/0/右CHANGE_ENDS
3216 : 16B/0/右CHANGE_ENDS
3317 : 16A/1/左CHANGE_ENDS
3417 : 17B/1/左SERVE_RIGHT
3518 : 17A/0/右SERVE_RIGHT
3618 : 18B/0/右SERVE_RIGHT
3719 : 18A/1/左SERVE_RIGHT
3819 : 19B/1/左SERVE_RIGHT
3920 : 19A/0/右SERVE_RIGHT
4020 : 20B/0/右SERVE_RIGHT
4121 : 20A/1/左SERVE_RIGHT
4221 : 21B/1/左SERVE_RIGHT
4322 : 21A/0/右SERVE_RIGHT
4422 : 22B/0/右SERVE_RIGHT
4523 : 22A/1/左SERVE_RIGHT
4623 : 23B/1/左SERVE_RIGHT
4724 : 23A/0/右SERVE_RIGHT
4824 : 24B/0/右SERVE_RIGHT
4925 : 24A/1/左SERVE_RIGHT
5025 : 25B/1/左SERVE_RIGHT
5126 : 25A/0/右SERVE_RIGHT
5226 : 26B/0/右SERVE_RIGHT
5327 : 26A/1/左SERVE_RIGHT
5427 : 27B/1/左SERVE_RIGHT
5528 : 27A/0/右SERVE_RIGHT
5628 : 28B/0/右SERVE_RIGHT
5729 : 28A/1/左SERVE_RIGHT
5829 : 29B/1/左SERVE_RIGHT
5930 : 29A/0/右SERVE_RIGHT
6030 : 30B/0/右SERVE_RIGHT
6131 : 30A/1/左SERVE_RIGHT
6231 : 31B/1/左SERVE_RIGHT
6332 : 31A/0/右SERVE_RIGHT
6432 : 32B/0/右SERVE_RIGHT
6533 : 32A/1/左SERVE_RIGHT
6633 : 33B/1/左SERVE_RIGHT
6734 : 33A/0/右SERVE_RIGHT
6834 : 34B/0/右SERVE_RIGHT
6935 : 34A/1/左SERVE_RIGHT
7035 : 35B/1/左SERVE_RIGHT
7136 : 35A/0/右LEAD_INTERVAL

③ 边界用例一键演示

A侧 B侧

④ 让分展示(起始比分)

起始比分MD 0 : 3 MX
命中规则MD→MX 让 3 分 · 男双让混双 3 分

⑤ 事件流

序事件关键点
1LEAD_INTERVAL{"trigger": "PRE_MATCH", "sec": 20}
2SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": false}
3SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
4SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
5SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
6SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
7SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
8SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
9SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
10SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
11SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
12SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
13SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
14SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
15SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
16SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
17SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
18SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
19SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
20SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
21SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
22SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
23SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
24SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
25SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
26SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
27SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
28SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
29SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
30SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
31SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
32SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
33CHANGE_ENDS{"points": 16, "trigger": "LEAD_REACH"}
34SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
35CHANGE_ENDS{"points": 16, "trigger": "LEAD_REACH"}
36SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
37CHANGE_ENDS{"points": 16, "trigger": "LEAD_REACH"}
38SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
39SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
40SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
41SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
42SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
43SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
44SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
45SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
46SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
47SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
48SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
49SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
50SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
51SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
52SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
53SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
54SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
55SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
56SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
57SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
58SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
59SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
60SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
61SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
62SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
63SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
64SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
65SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
66SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
67SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
68SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
69SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
70SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
71SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
72SERVE_RIGHT{"serving_side": "B", "server_no": 0, "from_right": true}
73SERVE_RIGHT{"serving_side": "A", "server_no": 1, "from_right": false}
74SERVE_RIGHT{"serving_side": "B", "server_no": 1, "from_right": false}
75SERVE_RIGHT{"serving_side": "A", "server_no": 0, "from_right": true}
76CHANGE_ENDS{"trigger": "GAME_END"}
77LEAD_INTERVAL{"trigger": "BETWEEN_GAMES"}

⑥ 统计

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