如何找到海龟碰撞

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 对象之间碰撞的内置方法。你可以做的是根据 snakecircle 的位置之间的差异定义一个碰撞函数。使用 Turtles 内置的 distance 函数,这是一项非常简单的任务。可以调整半径,在本例中为 20,以提高精度

import turtle

def isCollision(t1, t2):
    return t1.distance(t2) < 20

要将 circle 海龟移动到随机位置,您可以使用 gotorandit 函数让它随机移动到 xy坐标

import turtle
from random import randint

circle.goto(randint(0,100),randint(0,100))

参考文献: