программа обнаружения столкновений не будет работать в Turtle - PullRequest
2 голосов
/ 10 марта 2020

Когда я запускаю программу, она зависает и не работает. Смысл программы заключается в том, чтобы напечатать что-нибудь, когда координаты x и y положения контролируемой пользователем черепахи, которая управляется связыванием клавиш, находятся на расстоянии менее 10 пикселей от других координат положения x и y черепахи.

import turtle
import random
wn = turtle.Screen()
wn.setup(width = 450, height = 450)
player = turtle.Turtle()
player2 = turtle.Turtle()

def up():

    y  = player.ycor()
    y = y + 5
    player.sety(y)
    if y>=310:
        player.sety(y-15)

def down():
    y = player.ycor()
    y = y - 5
    player.sety(y)
    if y<-310:
        player.sety(y+15)


def left():
    x = player.xcor()
    x = x - 5
    player.setx(x)
    if x<=-625:
        player.setx(x+15)


def right():
    x = player.xcor()
    x = x + 5
    player.setx(x)
    if x>=625:
        player.setx(x-15)

player.penup()
player.setpos(0,0)
player.showturtle()
player.shape("square")
wn.bgcolor("green")
player2.shape("square")
player2.penup()
player2.setpos(300,300)
player2.showturtle()

turtle.listen()
turtle.onkeypress(up,"Up")

turtle.onkeypress(left,"Left")

turtle.onkeypress(right,"Right")

turtle.onkeypress(down, "Down")


def checkcollision(player,player2):
        if abs(player.xcor() - player2.xcor()) < 10 and abs(player.ycor() - player2.ycor()) < 10:
            player.write("collision")


while True:
    checkcollision(player,player2)

1 Ответ

3 голосов
/ 10 марта 2020

Я думаю, что он зависает из-за l oop в вашем коде:

while True:
    checkcollision(player,player2)

Он всегда проверяет столкновение, перемещает этот код в функции движения Up, Down, Left, Right et c и затем вызовите его после выполнения движения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...