【问题标题】:collision detection program won't work in Turtle碰撞检测程序在 Turtle 中不起作用
【发布时间】:2020-03-09 23:58:06
【问题描述】:

当我运行程序时,它会冻结并且无法运行。程序的重点是当由键绑定控制的用户控制的乌龟的 x 和 y 位置坐标与其他乌龟 x 和 y 位置坐标的距离小于 10 像素时打印出一些东西。

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)

【问题讨论】:

  • 好问题。一件事:当你运行它时实际发生了什么?

标签: python collision-detection turtle-graphics


【解决方案1】:

我认为它冻结是因为您的代码中的循环:

while True:
    checkcollision(player,player2)

它总是检查碰撞,将该代码移动到移动函数Up、Down、Left、Right 等,然后在移动后调用它。

【讨论】:

  • 我按照你所说的将 checkcollision 放在了击键函数中,效果很好,checkcollision 现在可以工作了,但是现在我想将第二只海龟移过设置为一定速度的窗口,但是海龟不是t 移动如下所示: 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) 我唯一改变的代码是航向和速度。
  • 谢谢!不要忘记接受解决您问题的答案。至于您的下一个问题,您将不得不提出另一个问题,因为您无法将它们组合在一个线程中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多