Python turtle编程:如何通过坐标判断海龟是否在圆内并输出输赢
海龟游戏输赢判断实现方案
核心判断逻辑
你绘制的红色填充圆参数可以通过turtle画圆规则推导:
- 调用
turtle.circle(100)时,海龟坐标为(-200, -100),默认朝向为右(0度) - turtle画圆的默认规则是:圆心位于海龟当前位置的左侧垂直方向,因此这个红圆的圆心坐标为(-200, 0),半径为100
判断海龟最终坐标(xpos, ypos)是否在圆内,用平面几何的点到圆心距离公式即可,为了避免开方运算可以直接用平方对比:
# 满足以下条件则海龟在圆内 (xpos + 200) ** 2 + ypos ** 2 <= 100 ** 2
原有代码问题修正
- 控制逻辑错误:原代码中R(右转)、L(左转)执行完转向后自动前进100,不符合常规操作逻辑,转向操作仅需调整海龟朝向即可
- 输赢提示未加判断:原代码会同时输出赢和输的两行文字,需要加条件分支判断后再输出对应内容
完整修正后代码
# 导入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
相关产品推荐
相关产品推荐

