吃完后如何让点消失?

时间:2015-12-09 00:34:20

标签: python turtle-graphics

我正在尝试使用乌龟图形编写python游戏,但我遇到了一些障碍。当我运行我的代码时,它允许我引导乌龟,然后一大堆点开始出现,然后它有递归深度错误。

我遇到问题的代码部分是:

def move():
    colormode(255)
    global turtle
    global moving
    x = randomColor()

    if moving:
        for i in range(1):
            turtle.penup()
            turtle.shape('turtle')
            turtle.shapesize(.5, .5, .5)
            turtle.color(x)
            turtle.forward(5)
            ontimer(move, 10 // FRAMES_PER_SECOND)

        x = randrange(-250, 250)
        y = randrange(-250, 250)
        pen1 = Pen()
        pen1.hideturtle()
        pen1.penup()
        pen1.goto(x, y)

        pen1.dot(10, "red")

        if turtle.pos() == pen1.pos():
            pen1.clear()
            pen1.goto(x, y)

我该如何解决这个问题?我希望当乌龟越过它时点会消失,然后生成一个新的随机点,一次只能产生一个点。

3 个答案:

答案 0 :(得分:0)

你应该:

  1. 开始时画一次红点并保存协调。
  2. 每次移动后,使用last_point(x,y)检查龟位置。
  3. 如果相同,请在背景颜色相同的位置绘制一个点(白色我认为)。

    3.1。然后创建新的随机x,y并重绘红点。

答案 1 :(得分:0)

我要做的就是定义一只具有食物形状和颜色的第二只乌龟。然后盖上那只乌龟来生成食物,保留stamp()电话的结果,这样你以后就可以打电话给clearstamp(stamp)。我已经在下面设置了很多食物,乌龟追逐它们直到它们全部消失:

from turtle import Turtle, Screen
from random import randrange

WIDTH, HEIGHT = 500, 500
FRAMES_PER_SECOND = 24
TARGET_SIZE = 10

POSITION, STAMP = 0, 1

def move():
    global meal

    x, y = meal[POSITION]
    tx, ty = turtle.position()

    if x - TARGET_SIZE // 2 < tx < x + TARGET_SIZE // 2 and y - TARGET_SIZE // 2 < ty < y + TARGET_SIZE // 2:
        food.clearstamp(meal[STAMP])

        if meals:
            meal = meals.pop()
        else:
            meal = None

    if meal:
        turtle.setheading(turtle.towards(meal[POSITION]))
        turtle.forward(turtle.speed())
        screen.ontimer(move, 1000 // FRAMES_PER_SECOND)


screen = Screen()
screen.setup(int(WIDTH * 1.1), int(HEIGHT * 1.1))  # size window but leave a border

turtle = Turtle(shape='turtle')
turtle.speed("fast")
turtle.penup()

food = Turtle(shape="circle", visible=False)
food.shapesize(0.5, 0.5)
food.color("red")
food.penup()

meals = []

for _ in range(10):
    x = randrange(-WIDTH // 2, WIDTH // 2)
    y = randrange(-HEIGHT // 2, HEIGHT // 2)

    food.goto(x, y)
    meals.append(((x, y), food.stamp()))

meal = meals.pop()

screen.ontimer(move, 1000 // FRAMES_PER_SECOND)

screen.exitonclick()

这只乌龟只是追逐一点食物,你可以修改代码,让他去最近的食物(因为你有他们的位置的食物清单)或自己控制乌龟。

enter image description here

答案 2 :(得分:0)

执行: (名).UP() (名称)的.forward(10000)