Если оператор не работает при использовании случайных чисел - PullRequest
0 голосов
/ 24 апреля 2019

В моем коде черепаха нарисовала точку в случайном месте.После того, как это нарисовано, другая черепаха идет вперед к тем же координатам.Предполагается, что когда вторая черепаха достигнет точки, точка должна исчезнуть и мгновенно перерисоваться где-то еще, но по какой-то причине оператор if не работает:

import turtle, random

t = turtle.Turtle()
t.speed(1)

dot = turtle.Turtle()
dot.hideturtle()
dot.speed(0)

dx = random.randint(1,100)
dy = random.randint(1,100)

tx = t.xcor()
ty = t.ycor()

def createDot(dx, dy):
  dot.penup()
  dot.goto(dx, dy)
  dot.pendown()
  dot.circle(5)

createDot(dx, dy)

t.goto(dx,dy)

if tx == dx and ty == dy:
  dot.clear()
  createDot(dx, dy)

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Перемещение черепахи с помощью

t.goto(dx,dy)

не меняет значений tx и ty.Попробуйте повторить

tx = t.xcor() 
ty = t.ycor()

перед оператором if.

0 голосов
/ 24 апреля 2019

Это хрупкая стратегия для начала:

if tx == dx and ty == dy:

когда черепахи бродят по плавающей точке и редко приземляются в одно и то же место. Давайте переделаем этот код, чтобы фактически использовать методы turtle и полностью исключить tx, ty и dx, dy:

from turtle import Screen, Turtle
from random import randint

def moveDot():
    dot.goto(randint(-100, 100), randint(-100, 100))

def chaseDot():
    if turtle.distance(dot) < 1:
        moveDot()
        turtle.setheading(turtle.towards(dot))

    turtle.forward(2)

    screen.ontimer(chaseDot, 50)

screen = Screen()

turtle = Turtle()
turtle.speed('slowest')

dot = Turtle('circle')
dot.shapesize(0.5)
dot.speed('fastest')
dot.penup()

chaseDot()

screen.exitonclick()

Это позволяет черепахе непрерывно преследовать точку - точка перемещается, когда черепаха достигает ее.

...