如何根据Python Turtle画笔在靶盘上的位置计算对应得分?
实现思路
- 你绘制的靶盘是圆心在
(0, 100)的同心圆结构,从外到内各环的外沿半径分别为100/80/60/40/20,只需计算落点到圆心的欧氏距离,即可快速判定对应得分 - 得分规则可按环从外到内依次设为2/4/6/8/10分,落点超出最外圈半径100时得0分,你也可以根据需求自行调整得分对应关系
完整实现代码
import turtle import math # 得分判定核心函数 def get_score(x, y): # 靶盘固定圆心坐标 center_x, center_y = 0, 100 # 计算落点到圆心的直线距离 distance = math.sqrt((x - center_x)**2 + (y - center_y)**2) # 按距离匹配对应得分 if distance <= 20: return 10 elif distance <= 40: return 8 elif distance <= 60: return 6 elif distance <= 80: return 4 elif distance <= 100: return 2 else: return 0 # 鼠标点击触发函数,点击后直接输出得分 def on_click(x, y): score = get_score(x, y) print(f"落点坐标:({x:.2f}, {y:.2f}),本次得分:{score}") # 原有靶盘绘制代码 turtle.color("black") turtle.circle(100) print(turtle.xcor(), turtle.ycor()) turtle.left(90) turtle.penup() turtle.forward(20) turtle.right(90) turtle.pendown() turtle.begin_fill() turtle.circle(80) print(turtle.xcor(), turtle.ycor()) turtle.end_fill() turtle.left(90) turtle.penup() turtle.forward(20) turtle.right(90) turtle.pendown() turtle.color("blue") turtle.begin_fill() turtle.circle(60) print(turtle.xcor(), turtle.ycor()) turtle.end_fill() turtle.left(90) turtle.penup() turtle.forward(20) turtle.right(90) turtle.pendown() turtle.color("red") turtle.begin_fill() turtle.circle(40) print(turtle.xcor(), turtle.ycor()) turtle.end_fill() turtle.left(90) turtle.penup() turtle.forward(20) turtle.right(90) turtle.pendown() turtle.color("yellow") turtle.begin_fill() turtle.circle(20) print(turtle.xcor(), turtle.ycor()) turtle.end_fill() turtle.penup() turtle.forward(20) turtle.pendown() turtle.color("green") turtle.dot() turtle.hideturtle() # 绑定窗口点击事件,点击任意位置自动计算得分 turtle.onscreenclick(on_click) turtle.done()
使用说明
运行代码后会弹出靶盘窗口,用鼠标点击窗口内任意位置,控制台就会输出对应落点的坐标和得分。如果需要做随机落点模拟测试,直接调用get_score(x, y)传入指定坐标即可得到对应得分。
内容的提问来源于stack exchange,提问作者Sebastian Llaurador
相关产品推荐
相关产品推荐

