【问题标题】:Why my python kept crashing when it tried to run the turtle.tracer() method in turtle module?为什么我的 python 在尝试运行 turtle 模块中的 turtle.tracer() 方法时一直崩溃?
【发布时间】:2022-01-10 13:00:18
【问题描述】:

我正在使用海龟模块编写一个蛇游戏,但是当我将这一行添加到我的代码中时,海龟屏幕和 python 崩溃了:

turtle.tracer(0)

有人可以帮我完成游戏吗?非常感谢

我的代码:

from turtle import Turtle, Screen, colormode


screen = Screen()
screen.bgcolor("black")
screen.setup(width=600, height=600)
screen.title("My Snake Game")
screen.tracer(0)
x = 0

segments = []

for turtle in range(3):
    turtle = Turtle("square")
    turtle.color("white")
    turtle.penup()
    turtle.goto(0-x, 0)
    x += 20

    segments.append(turtle)


game_is_on = True
screen.update()
while game_is_on:
    for segment in segments:
        segment.forward(20)


screen.exitonclick()

【问题讨论】:

  • 你想通过这条线实现什么?
  • 我想关闭我创建的行(蛇的身体)中每个片段的动画,然后在我的蛇移动时使用turtle.update() 更新屏幕。如果你愿意,我可以给你看我的代码吗?我是初学者,我的代码只使用了海龟模块
  • 如果你能在问题中分享你的代码会更好。
  • 我添加了我的代码。感谢您的宝贵时间!

标签: python module turtle-graphics class-method python-turtle


【解决方案1】:

我认为我们需要更多地了解您所说的“崩溃”是什么意思。如果您的意思是一切都冻结了,那就是您编写的代码。一旦你介绍了tracer(),你需要为你希望用户看到的每一个变化提供一个update()。但是您的循环中没有任何 update() 调用,因此所有内容在视觉上都保持在循环之前的状态。如果您想看到分段移动,您需要执行以下操作:

from turtle import Turtle, Screen

screen = Screen()
screen.bgcolor('black')
screen.setup(width=600, height=600)
screen.title("My Snake Game")
screen.tracer(0)

x = 0

segments = []

for turtle in range(3):
    turtle = Turtle('square')
    turtle.color('white')
    turtle.penup()
    turtle.setx(x)

    x -= 20

    segments.append(turtle)

screen.update()

game_is_on = True

while game_is_on:
    for segment in segments:
        segment.forward(20)

    screen.update()

screen.exitonclick()  # never reached

如果您所说的“崩溃”是指 Python 退出操作系统,那么您需要描述运行此代码的环境。

【讨论】:

  • 您能否让我更清楚地了解“描述您运行此代码的环境。”?我真的不明白。对不起!
  • 我测试了你的代码,我想通了,非常感谢!
猜你喜欢
  • 2019-08-25
  • 2019-12-18
  • 2017-11-21
  • 1970-01-01
  • 2022-12-29
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2011-04-26
相关资源
最近更新 更多