为什么我的 python 在尝试运行 turtle 模块中的 turtle.tracer() 方法时一直崩溃?

问题描述 投票:0回答:2

我正在使用 turtle 模块编写贪吃蛇游戏,但是当我将这一行添加到我的代码中时,turtle 屏幕和 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()
python module turtle-graphics class-method python-turtle
2个回答
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 退出回到操作系统,那么您需要描述运行此代码的环境。


-1
投票

我有这个确切的问题,如您所描述的那样崩溃。解决方案是什么?!

© www.soinside.com 2019 - 2024. All rights reserved.