【问题标题】:Python - How to check all the time if Turtle in PositionPython - 如何一直检查海龟是否在位
【发布时间】:2018-02-11 20:37:07
【问题描述】:

我是 Python 3x 的新手,正在尝试编写一个小型“游戏”。 目前我正在与 Turtle 合作。所以,我用 turtle.Turtle() 添加了 2 个 Turtles,并且想要编写代码,它检查示例 Turtle1 是否在 Turtle2 位置。

import turtle
import random

turtle1 = turtle.Turtle()
turtle1.color("blue")
turtle1.shape("square")
turtle1.penup()

turtle2 = turtle.Turtle()
turtle2.color("red")
turtle2.shape("square")
turtle2.penup()

# ---

def k1():
    turtle1.forward(10)

def k2():
    turtle1.left(90)

def k3():
    turtle1.right(90)

turtle.onkeypress(k1, "Up")
turtle.onkey(k2, "Left")
turtle.onkey(k3, "Right")
turtle.listen()

# ---

def npos():
    xpos = random.randrange(0,100)
    ypos = random.randrange(0,100)
    random.Random()
    turtle2.setpos(xpos, ypos)

npos()
# ---   

t2pos = turtle2.pos()

if turtle1.distance(t2pos) < 5:
    npos()

所以,我想一直检查,如果turtle1在turtle2的位置附近,如果是,用npos()改变turtle2的位置

谢谢。

【问题讨论】:

    标签: python python-3.x if-statement while-loop


    【解决方案1】:

    假设我正确理解了您的问题,您只需修改您的密钥处理程序并稍微修改 `npos()´ 函数:

    def k1():
        turtle1.forward(10)
        npos()
    
    def k2():
        turtle1.left(90)
        npos()
    
    def k3():
        npos()
        turtle1.right(90)
    
    def npos():
        if turtle1.distance(turtle2) >= 5:
             return
        xpos = random.randrange(0,100)
        ypos = random.randrange(0,100)
        turtle2.setpos(xpos, ypos)
    

    现在每次按键后都会调用npos() 函数。在修改后的版本中,npos() 检查距离是否大于 4,如果是则什么都不做,否则将随机选择turtle2 的位置。

    【讨论】:

    • turtle1.distance(turtle2) 就够了。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多