当两只乌龟靠近时如何停止乌龟移动?

时间:2021-01-02 03:11:43

标签: python

当用户必须移动汽车以躲避障碍物时,我正在制作游戏,除了我无法开始和结束游戏外,一切正常。我的目标是在方块碰到乌龟时结束游戏。

问题是我无法让游戏检测海龟以检测它们的接近程度,并且退出或退出命令不起作用。此外,我认为代码粘贴不正确,因此如果不起作用,请调整缩进。

import turtle as trtl
import random as rand
import sys

#initialize turtles
turtle = trtl.Turtle(shape = "turtle")
block = trtl.Turtle(shape = "square")
drawer = trtl.Turtle()
blockList = []
wn = trtl.Screen()

#game configuration
turtle.pu()
turtle.goto(0,-150)
drawer.pu()
drawer.goto(0,-160)
drawer.pd()
drawer.pensize(10)
drawer.pencolor("blue")
drawer.forward(180)
drawer.left(90)
drawer.forward(300)
drawer.left(90)
drawer.forward(350)
drawer.left(90)
drawer.forward(300)
drawer.left(90)
drawer.forward(180)
drawer.hideturtle()

def turtleRight():
 turtle.setheading(0)
 turtle.pu()
 turtle.forward(15)

def turtleLeft():
 turtle.setheading(180)
 turtle.pu()
 turtle.forward(15)

 #actions
 wn.onkeypress(turtleRight, 'Right')
 wn.onkeypress(turtleLeft, 'Left')
 wn.listen()

 for i in range(5):
 app = block
 blockList.append(app)

 #functions
 def draw_blocks(index):
  blockList[index].penup()
  blockList[index].shape("square")
  wn.tracer(False)
  blockList[index].setx(rand.randint(-150,150))
  blockList[index].sety(rand.randint(0,125))
  blockList[index].showturtle()
  wn.tracer(True)
  wn.update()

 def drop_block(index):
  blockList[index].penup()
  blockList[index].clear()
  blockList[index].speed(2)
  blockList[index].sety(-150)
  blockList[index].hideturtle()
  draw_blocks(index)
  xDistance = abs(turtle.xcor()-block.xcor())
  yDistance = abs(turtle.ycor()-block.ycor())
  if (xDistance < 20 and yDistance < 20):
   sys.exit()
  else:
   drop_block(i)

 for i in range(5):
 drop_block(i)

 wn.mainloop()
 trtl.done()

任何人都可以帮忙...!?

1 个答案:

答案 0 :(得分:0)

问题在于您正在重新绘制块,从而在测试距离之前重置其位置。

像这样改变函数:

function youngest(people) {
    if (!people.length) return null;
    return people.reduce((yst, person) => person.age < yst.age ? person : yst) 
}