Как определить, что черепаха Python находится в квадрате? - PullRequest
0 голосов
/ 31 октября 2018

Я пишу код для поиска сокровищ, используя двух черепах. Для обоих заданы случайные координаты - одна из них должна использоваться пользователем, а другая рисует квадрат, который должен быть областью сокровищ на карте. Проблема, которую я имею, пытается определить, когда черепаха находится в границах квадрата. Вот что у меня на данный момент:

import turtle
from random import randint
#create turtle and its shape
pepe= turtle.Turtle()
pepe.shape("turtle")
pepe.color("blue")
pepex=randint(0,250)
pepey=randint(0,250)
pepe.setposition(pepex, pepey)
#create a new screen and set screen size
scrn1 = turtle.Screen ()
scrn1.screensize(500,500)
scrn1.bgcolor("pink")
scrn1.title("Treasure hunt")
#create turtle that draws treasure square, set in random positon
pat = turtle.Turtle()
pat.shape("arrow")
pat.color("red")
patx=randint(0,250)
paty=randint(0,250)
pat.setposition(patx, paty)
pat.begin_fill()
for i in range (4):
    pat.forward(30)
    pat.left(90)
pat.end_fill()
#prompt user if they want to go on a treasure hunt
treasure_hunt=input("Do you want to go on a treasure hunt? Press y to continue")
while treasure_hunt=='y':
    #ask user for input to move their turtle, each time sets the angle back to 0 to move right and 90 to move up
    left_or_right=int(input("Enter number between -250 and 250 to move left or right"))
    pepe.seth(0)
    pepe.forward(left_or_right)
    up_or_down=int(input("Enter number between -250 and 250 to move up or down"))
    pepe.seth(90)
    pepe.forward(up_or_down)
    if pepe.distance(pat) ==0:
        break
pat.write("You did it!", font=("Arial", 16, "normal"))

1 Ответ

0 голосов
/ 31 октября 2018

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

from turtle import Screen, Turtle
from random import randint

CURSOR_SIZE = 20

# create a new screen and set screen size
screen = Screen()
screen.screensize(500, 500)
screen.bgcolor("pink")
screen.title("Treasure hunt")

# create turtle and its shape
pepe = Turtle("turtle", visible=False)
pepe.color("blue")
pepe.penup()
pepe.setposition(randint(-250, 250), randint(-250, 250))
pepe.pendown()
pepe.showturtle()

# create turtle that draws treasure square, set in random position
pat = Turtle('square', visible=False)
pat.shapesize(30 / CURSOR_SIZE)
pat.color("black", "red")
pat.penup()
pat.setposition(randint(-250, 250), randint(-250, 250))
pat.showturtle()

# prompt user if they want to go on a treasure hunt
treasure_hunt = input("Do you want to go on a treasure hunt? Press y to continue: ")

while treasure_hunt == 'y':
    # ask user for input to move their turtle, each time sets
    # the angle back to 0 to move right and 90 to move up

    left_or_right = int(input("Enter number between -250 and 250 to move left or right: "))
    pepe.setheading(0)
    pepe.forward(left_or_right)

    up_or_down = int(input("Enter number between -250 and 250 to move up or down: "))
    pepe.setheading(90)
    pepe.forward(up_or_down)

    if pepe.distance(pat) < 15:
        pat.write("You did it!", font=("Arial", 16, "normal"))
        break

screen.mainloop()

enter image description here

...