You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改网球游戏代码,使分数显示为15-30而非1-2

网球游戏计分规则适配修改方案

我们需要基于网球标准计分规则,把数字形式的分数映射为15、30、40、占先(Advantage)、平分(Deuce)这类专业计分格式,同时处理获胜判定的特殊逻辑。以下是修改后的完整代码及关键说明:

import numpy as np

# 基础计分映射表,对应网球规则的核心计分
score_map = {0: '0', 1: '15', 2: '30', 3: '40'}

def get_tennis_score(server_points, receiver_points):
    # 处理双方均拿到3分及以上的特殊场景
    if server_points >= 3 and receiver_points >= 3:
        if server_points == receiver_points:
            return "Deuce"
        elif server_points - receiver_points == 1:
            return "Advantage Server"
        elif receiver_points - server_points == 1:
            return "Advantage Receiver"
        else:
            # 一方领先两分且均过3分,直接判定获胜
            return "Server Wins" if server_points > receiver_points else "Receiver Wins"
    # 常规计分场景:直接映射数字到网球计分
    else:
        server_display = score_map.get(server_points, str(server_points))
        receiver_display = score_map.get(receiver_points, str(receiver_points))
        return f"{server_display}-{receiver_display}"

# 游戏核心逻辑(替换为你原代码的实际运行逻辑即可)
def tennis_game():
    server_points = 0
    receiver_points = 0
    while True:
        # 模拟随机得分(替换成你原游戏的得分触发逻辑)
        point_winner = np.random.choice(['server', 'receiver'])
        if point_winner == 'server':
            server_points += 1
        else:
            receiver_points += 1
        
        # 输出标准格式的当前分数
        current_score = get_tennis_score(server_points, receiver_points)
        print(f"Current Score: {current_score}")
        
        # 游戏结束判定:一方至少4分且领先对手两分
        if (server_points >=4 or receiver_points >=4) and abs(server_points - receiver_points) >=2:
            print(f"Game Over: {'Server' if server_points > receiver_points else 'Receiver'} Wins!")
            break

if __name__ == "__main__":
    tennis_game()

关键修改说明

  • 统一计分映射:用score_map替代原代码中分开的server_dict和receiver_dict,避免重复定义,简化映射逻辑。
  • 特殊场景覆盖:
    • 当双方分数都≥3时,优先处理平分、占先的情况,符合网球的核心规则;
    • 只有当一方领先两分且分数≥4时,才判定游戏结束,避免提前终止。
  • 无缝替换:如果你的原代码中有独立的分数显示逻辑,直接调用get_tennis_score函数即可输出标准计分格式,无需修改原有得分累计逻辑。

内容的提问来源于stack exchange,提问作者philippamensah00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:33:15