Функция скорости не меняет положение черепах независимо от того, какие параметры я ввел - PullRequest
1 голос
/ 10 марта 2020

В программе, которую я создал, есть две черепахи, одна из которых является пользователем (игроком), а другая - игроком 2, и через них выполняется функция checkcollision, которая определяет, пересекаются ли черепахи, таким образом, перемещая вторую черепаху в случайное положение -250 250 для его координаты х и у. Проблема, однако, в том, что я хочу, чтобы вторая черепаха (не пользователь) двигалась по экрану по прямой линии, и я установил ее на 2, а также попытался установить ее на нормальное значение, и все это не заставило черепаху двигаться.

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)
    checkcollision(player,player2)

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


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


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

player.penup()
player.setpos(0,0)
player.showturtle()
player.shape("square")
wn.bgcolor("green")
player2.shape("turtle")
player2.penup()
player2.setpos(300,300)
player2.showturtle()
player2.setheading(-100)
player2.speed(2)


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

turtle.onkeypress(left,"Left")

turtle.onkeypress(right,"Right")

turtle.onkeypress(down, "Down")


def checkcollision(t1,t2):
        if abs(t1.xcor() - t2.xcor()) < 10 and abs(t1.ycor() - t2.ycor()) < 10:
            player2.setpos(random.randint(-250,250), random.randint(-250,250))



checkcollision(player,player2)

1 Ответ

1 голос
/ 10 марта 2020

Ваш код имеет несколько проблем, и я удивлен, что он работает вообще, как показано выше. (Он должен просто провалиться через нижнюю часть кода, закрыть окно черепахи и вернуться в консоль.) Например, он, похоже, не понимает свою собственную систему координат - координаты х go от -425 до + 425, но мы проверяем, является ли координата x черепахи <= -625. Ниже моя переделка для решения вашего вопроса и этих других вопросов:

from turtle import Screen, Turtle
from random import randint

def up():
    y = player.ycor() + 5

    if y < 200:
        player.sety(y)
        checkcollision()

def down():
    y = player.ycor() - 5

    if y > -200:
        player.sety(y)
        checkcollision()

def left():
    x = player.xcor() - 5

    if x > -200:
        player.setx(x)
        checkcollision()

def right():
    x = player.xcor() + 5

    if x < 200:
        player.setx(x)
        checkcollision()

def checkcollision():
    if player.distance(player2) < 20:
        player2.setpos(randint(-200, 200), randint(-200, 200))

screen = Screen()
screen.setup(width=450, height=450)
screen.bgcolor('green')

player = Turtle()
player.shape('square')
player.speed('fastest')
player.penup()

player2 = Turtle()
player2.shape('square')
player2.speed('slowest')
player2.color('yellow')
player2.penup()

checkcollision()

screen.onkeypress(up, 'Up')
screen.onkeypress(left, 'Left')
screen.onkeypress(right, 'Right')
screen.onkeypress(down, 'Down')
screen.listen()

screen.mainloop()
...