如何找到海龟碰撞
How to find a turtle collision
我正在尝试在 python 中制作一个蛇与乌龟的游戏。
我想做的是当蛇进入圆圈时蛇变长。
我还尝试使用随机模块使圆圈每次都在不同的位置,我不想让蛇跑出屏幕。
from turtle import Turtle, Screen
import random
wn = Screen()
wn.bgcolor('lightblue')
snake = Turtle()
snake.shape("square")
snake.shapesize(1, 1, 1)
snake.color('red')
snake.penup()
speed = 3
circle = Turtle()
circle.shape("circle")
circle.shapesize(0.8, 0.8, 0.8)
circle.color('blue')
def travel():
snake.forward(speed)
wn.ontimer(travel, 10)
#controls for using arrows with keyboard
wn.onkey(lambda: snake.setheading(90), 'Up')
wn.onkey(lambda: snake.setheading(180), 'Left')
wn.onkey(lambda: snake.setheading(0), 'Right')
wn.onkey(lambda: snake.setheading(270), 'Down')
wn.listen()
travel()
wn.mainloop()
Turtle 不包含任何检测两个 Turtle
对象之间碰撞的内置方法。你可以做的是根据 snake
和 circle
的位置之间的差异定义一个碰撞函数。使用 Turtles 内置的 distance
函数,这是一项非常简单的任务。可以调整半径,在本例中为 20,以提高精度
import turtle
def isCollision(t1, t2):
return t1.distance(t2) < 20
要将 circle
海龟移动到随机位置,您可以使用 goto
和 randit
函数让它随机移动到 x
和y
坐标
import turtle
from random import randint
circle.goto(randint(0,100),randint(0,100))
参考文献:
我正在尝试在 python 中制作一个蛇与乌龟的游戏。 我想做的是当蛇进入圆圈时蛇变长。
我还尝试使用随机模块使圆圈每次都在不同的位置,我不想让蛇跑出屏幕。
from turtle import Turtle, Screen
import random
wn = Screen()
wn.bgcolor('lightblue')
snake = Turtle()
snake.shape("square")
snake.shapesize(1, 1, 1)
snake.color('red')
snake.penup()
speed = 3
circle = Turtle()
circle.shape("circle")
circle.shapesize(0.8, 0.8, 0.8)
circle.color('blue')
def travel():
snake.forward(speed)
wn.ontimer(travel, 10)
#controls for using arrows with keyboard
wn.onkey(lambda: snake.setheading(90), 'Up')
wn.onkey(lambda: snake.setheading(180), 'Left')
wn.onkey(lambda: snake.setheading(0), 'Right')
wn.onkey(lambda: snake.setheading(270), 'Down')
wn.listen()
travel()
wn.mainloop()
Turtle 不包含任何检测两个 Turtle
对象之间碰撞的内置方法。你可以做的是根据 snake
和 circle
的位置之间的差异定义一个碰撞函数。使用 Turtles 内置的 distance
函数,这是一项非常简单的任务。可以调整半径,在本例中为 20,以提高精度
import turtle
def isCollision(t1, t2):
return t1.distance(t2) < 20
要将 circle
海龟移动到随机位置,您可以使用 goto
和 randit
函数让它随机移动到 x
和y
坐标
import turtle
from random import randint
circle.goto(randint(0,100),randint(0,100))
参考文献: