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

Python turtle编程:如何通过坐标判断海龟是否在圆内并输出输赢

海龟游戏输赢判断实现方案

核心判断逻辑

你绘制的红色填充圆参数可以通过turtle画圆规则推导:

  • 调用turtle.circle(100)时,海龟坐标为(-200, -100),默认朝向为右(0度)
  • turtle画圆的默认规则是:圆心位于海龟当前位置的左侧垂直方向,因此这个红圆的圆心坐标为(-200, 0),半径为100

判断海龟最终坐标(xpos, ypos)是否在圆内,用平面几何的点到圆心距离公式即可,为了避免开方运算可以直接用平方对比:

# 满足以下条件则海龟在圆内
(xpos + 200) ** 2 + ypos ** 2 <= 100 ** 2

原有代码问题修正

  1. 控制逻辑错误:原代码中R(右转)、L(左转)执行完转向后自动前进100,不符合常规操作逻辑,转向操作仅需调整海龟朝向即可
  2. 输赢提示未加判断:原代码会同时输出赢和输的两行文字,需要加条件分支判断后再输出对应内容

完整修正后代码

# 导入turtle库
import turtle

shape = ""
direction = ""

# 设置海龟颜色和背景色
turtle.color("green")
turtle.Screen().bgcolor("blue")
screen = turtle.Screen()

# 让用户选择海龟外形
shape = turtle.textinput("选择外形", "请输入外形:classic、arrow、turtle、circle、square、triangle")
turtle.shape(shape)

# 绘制红色填充圆
turtle.penup()
turtle.goto(-200, -100)
turtle.pendown()
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
turtle.penup()
turtle.color("green")

# 海龟复位到原点
turtle.goto(0, 0)

# 给用户10次移动机会
for counter in range(10):
    direction = screen.textinput("控制方向", "输入F前进、B后退、R右转、L左转")
    if direction == "F":
        turtle.forward(100)
    elif direction == "B":
        turtle.backward(100)
    elif direction == "R":
        turtle.right(90)
    elif direction == "L":
        turtle.left(90)

# 获取海龟最终坐标
xpos = turtle.xcor()
ypos = turtle.ycor()

# 判断输赢
if (xpos + 200) ** 2 + ypos ** 2 <= 100 ** 2:
    turtle.write("恭喜你赢了!", align="center", font=('Arial', '16', 'bold'))
else:
    turtle.write("很遗憾你输了", align="center", font=('Arial', '16', 'bold'))

turtle.exitonclick()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:27:07