今天跟大家唠唠我最近折腾的网球赛制,别看平时电视里看着简单,真自己上手,那坑可真不少。
我寻思着,这不就是你一分我一分的吗?结果一查资料,好家伙,15、30、40,还Deuce,直接给我整懵了。赶紧恶补了一下规则:
- 分:0 -> 15 -> 30 -> 40,第四分拿下就赢一局。
- 局:赢六局并且领先两局,才能赢一盘。
- 盘:三盘两胜或者五盘三胜。
理论上是明白了,但光看没用,得实践!于是乎,我拉着我那只会玩消消乐的老婆,准备来一场“家庭网球赛”。
我老婆根本不明白15、30、40是啥意思,我就用最简单粗暴的方式跟她解释:“你打赢一个球,我就给你15块钱,赢到40块,这局你就赢了!” 这招还挺管用,她瞬间就来了精神。
第一局,我老婆靠着“钞能力”愣是跟我打到了40:40,我给她解释啥叫“平分”,必须连赢两分才能赢。她直接来了一句:“这么麻烦?要不咱俩一人退一步,谁先到50谁赢?” 我差点没一口老血喷出来。
好说歹说,总算让她明白了“Deuce”的规则。后面的比赛,虽然她还是经常忘记比分,但是靠着我不断地提醒,总算是磕磕绊绊地打完了“一盘”。
打完之后,我发现光靠人脑记分太容易出错了,而且也没法统计一些数据,比如发球得分率、一发成功率啥的。于是我就想着,能不能写个小程序,自动记分和统计数据?
说干就干!我先用Excel简单做了个表格,记录每一分的得分情况,然后用公式计算出局数、盘数。但是Excel毕竟不是专业的工具,用起来还是不太方便。
后来我开始尝试用Python写一个简单的命令行程序。主要功能就是:
- 显示当前比分
- 记录每一分的胜者
- 自动判断是否赢了一局、一盘、一场
遇到的最大的问题就是如何处理“Deuce”的情况。我想了好几种方案,决定用一个循环来判断,直到一方领先两分才结束。代码写得比较糙,就不献丑了。
虽然这个小程序还很简陋,但是已经能基本满足我的需求了。至少以后跟老婆打球的时候,不用再担心记错比分了。我打算继续完善这个小程序,增加一些更高级的功能,比如:
- 可视化界面
- 数据统计和分析
- 网络对战功能
希望能早日做出一个真正好用的网球记分工具,也欢迎大家给我提提建议!