python - 当它撞到一个圆圈时如何让乌龟重置?
问题描述
代码没有错误,我只需要添加一些东西。这是海龟的代码:
#move is the spaceship
move = turtle.Turtle()
showturtle()
turtle.hideturtle()
move.setposition(-500,0)
move.pencolor('cyan')
move.fillcolor("blue")
move.penup()
move.speed()
move.shapesize(3,3,3)
def k1():
move.forward(25)
def k2():
move.left(30)
def k3():
move.right(30)
def k4():
move.backward(15)
wn.onkey(k1, "Up")
wn.onkey(k2, "Left")
wn.onkey(k3, "Right")
wn.onkey(k4, "Down")
这是圆圈:
asteroid = Turtle()
if move.distance(asteroid)<5:
move.goto(0,0)
asteroid.pencolor('grey')
asteroid.fillcolor('grey')
asteroid.begin_fill()
asteroid.hideturtle()
asteroid.penup()
asteroid.speed(15)
asteroid.setposition(randint(-400,400), randint(-400,400))
asteroid.pendown()
asteroid.circle(35)
asteroid.end_fill()
当“移动”击中“小行星”时,我需要程序重新启动游戏。该程序运行良好,但我只需要添加它。谢谢你。
解决方案
您需要跟踪对象的位置并定期比较它们。
该函数.pos
为您提供对象的当前位置。
您应该创建一个循环来检查对象的位置是否相同。
if move.pos() == asteroid.pos():
print("Collision!")
您还必须将对象的大小添加到这些值中(例如,move_size = move.pos() + your_shape_size
对不起,我从未使用过海龟),因为两条边可能会相互碰撞,这也是一种碰撞。
推荐阅读
- c# - 当我使用 Visual Studio 发布向导将 Blazor WASM 站点发布到第三方主机时,我的 web.config 转换没有任何效果
- tensorflow - Tensorflow Extended (TFX):有没有一种简单的方法可以从 Transorm 组件中调试函数?
- javascript - C#:从 Web 服务返回的字节 [] 在新选项卡中显示 PDF
- c - 如何在 c 中减少相同的 if-else
- reactjs - 在 React 表单中访问子组件的值
- node.js - 如何在 cloudinary [Node js] 中上传多个不同大小的图像
- r - 带有 json 文件的 R 传单弹出功能
- javascript - 如何从提示中获取价值并使用它来将内容更改为
- 待办事项应用程序的元素?
- javascript - JavaScript 是否在底层使用 Object 构造函数创建对象字面量?
- typescript - TypeScript:内联空检查混淆,在特定用途中不起作用