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

Python Turtle赛跑游戏结束判定功能失效问题求助

问题根因
  • 判定逻辑仅在程序初始化阶段执行了1次,后续玩家操控海龟移动时不会再重新触发判定,所以只有初始位置符合条件时才会有输出。
  • 判定的数值逻辑存在错误:你写的ycor()>= (-160) and ycor()<= (-240)是不可能成立的,-160大于-240,不存在数值同时满足这两个条件。
修复步骤
  1. 把游戏结束判定封装为独立函数,每次玩家操作海龟移动后,自动调用该函数检查是否到达终点
  2. 修正Y轴判定的区间逻辑,把大小关系反过来
  3. 可在判定成功后添加游戏结束的提示逻辑,取消按键监听避免后续无效操作
关键修改代码示例
# 新增游戏结束判定函数
def check_game_over():
    # 修正后的判定逻辑,Y轴区间是-240到-160,X轴是0到11
    if (-240 <= turtle.ycor() <= -160) and (0 <= turtle.xcor() <= 11):
        print("玩家1获胜")
        # 后续可以加胜利弹窗、停止监听等逻辑
        return True
    if (-240 <= t1.ycor() <= -160) and (0 <= t1.xcor() <= 11):
        print("玩家2获胜")
        return True
    return False

# 修改所有移动函数,移动后调用判定
def f():
    fd(10)
    check_game_over()

def b():
    bk(10)
    check_game_over()

def l():
    left(10)
    check_game_over()

def r():
    right(10)
    check_game_over()

def fo():
    t1.fd(10)
    check_game_over()

def ba():
    t1.bk(10)
    check_game_over()

def le():
    t1.left(10)
    check_game_over()

def ri():
    t1.right(10)
    check_game_over()
额外优化建议
  • 可以把原代码里重复定义的Screen实例删掉,你已经定义了wn和window两个重复的屏幕实例,保留一个就行
  • 终点的坐标范围可以根据你实际画的赛道位置调整,避免出现判定区域和实际显示不符的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:02