【问题标题】:How to detect if turtle is in the radius of x & y and then do something?如何检测乌龟是否在 x & y 的半径内然后做点什么?
【发布时间】:2018-12-02 15:12:26
【问题描述】:

目前,我正在尝试制作一个游戏,并且在游戏中我想要它,所以如果角色在一个物体的顶部,它会捡起它。这是我目前所拥有的:

import turtle
import time

default = turtle.clone()
scar = turtle.clone()

def pickupScar():
    if default.distance(-7,48) > 5.0:
        default.changeshape('defaultscar.gif')

wn = turtle.Screen()
wn.setup(500,500)
wn.bgpic('TrumpTowers.gif')
wn.register_shape('default.gif')
wn.register_shape('scar.gif')
wn.register_shape('defaultscar.gif')

turtle.hideturtle()
default.shape('default.gif')
scar.shape('scar.gif')

default.pu()
default.left(90)
default.bk(35)

scar.pu()
scar.left(90)
scar.fd(45)
scar.speed(-1)

default.ondrag(default.goto)

有谁知道我将如何制作 def PickingScar,因为我是 python 和海龟的新手。如果你知道我的游戏是关于什么的,请不要评判我,这是一个学校项目,我想不出任何游戏创意。

【问题讨论】:

  • 请详细说明您的问题,@MistxOli。
  • 所以你有一个 (x,y) 坐标,你想找到从海龟到这一点的半径,对吗?
  • @LuanNaufal 这不是一个问题,我想知道如何检测海龟是否在 x 和 y 的半径范围内以及它是否要做某事。
  • 堆栈溢出是针对特定的编程问题。这个问题很可能会结束。但是你似乎是一个新用户:turtle 中有一个distance 函数。如果您需要投票,也许您想查看threading,但也许turtle 有一个内置事件
  • @LuanNaufal 不,我想让游戏检测海龟是否进入,比如说一组 x y 的 10px 半径。

标签: python python-3.x turtle-graphics


【解决方案1】:

由于我没有您的图片,也不知道您的游戏是关于什么的,所以下面是您描述的功能示例。屏幕上是黑色圆圈和粉色方块。你可以拖动圆圈,如果你把它拖到正方形上,它会长出一个头和腿,变成一只乌龟。拖出正方形,它恢复为圆形:

from turtle import Screen, Turtle

def drag(x, y):
    default.ondrag(None)  # disable handler inside handler

    default.goto(x, y)

    if default.distance(scar) < 40:
        default.shape('turtle')
    elif default.shape() == 'turtle':
        default.shape('circle')

    default.ondrag(drag)

wn = Screen()
wn.setup(500, 500)

scar = Turtle('square', visible=False)
scar.shapesize(4)
scar.color('pink')
scar.penup()
scar.left(90)
scar.forward(50)
scar.showturtle()

default = Turtle('circle', visible=False)
default.shapesize(2)
default.speed('fastest')
default.penup()
default.left(90)
default.backward(50)
default.showturtle()

default.ondrag(drag)

wn.mainloop()

【讨论】:

  • 中心部分也应该是一个圆,这样半径就清楚了
【解决方案2】:

我不知道turtle-graphics,但在现实世界中,我们使用勾股定理来确定两点之间的距离(对于二维表面)。

如果某个对象位于(x1, y1),另一个位于(x2, y2),则距离为

dist=sqrt((x1-x2)^2 + (y1-y2)^2)

所以,如果dist &lt;= R,乌龟(或其他)是in R radius from desired point

【讨论】:

  • OP 要求事件检测而不仅仅是计算距离
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
相关资源
最近更新 更多