不前进,在创建时也会消失

Turtle not moving forward and also disappears when created

提问人:syed massab 提问时间:11/17/2023 最后编辑:toyota Suprasyed massab 更新时间:11/20/2023 访问量:34

问:

我在代码中移动了示踪剂的位置,我看到海龟被制造出来了,但之后它消失了,只有当我向左或向右移动它时,它才会显示在屏幕上,也会在屏幕上显示,但它不会自行前进。

请帮帮我,我也尝试过使用 ChatGPT,但它没有给我解决方案。

我已经开始编码将近 20 天了,所以我不擅长。

from turtle import Turtle,Screen
import time

scr=Screen()
scr.setup(600,600)
scr.bgcolor("black")
scr.title("Snake Xenzia")
snakes=[]
sp=[(0,0),(-20,0),(-40,0)]
scr.tracer( 0 )
for i in sp:
    snake=Turtle()
    snake.shape( "square" )
    snake.color( "white" )
    snake.pu()
    snake.goto(i)
    snakes.append(snake)


def lft():

    for i in range( (len( snakes ) - 1), 0, -1 ):
        new_x=snakes[ i - 1 ].xcor()
        new_y=snakes[ i - 1 ].ycor()
        snakes[ i ].goto( new_x, new_y )
    snakes[ 0 ].left( 90 )
    snakes[ 0 ].forward( 20 )
    scr.update()


def rit():
    for i in range( (len( snakes ) - 1), 0, -1 ):
        new_x=snakes[ i - 1 ].xcor()
        new_y=snakes[ i - 1 ].ycor()
        snakes[ i ].goto( new_x, new_y )
    snakes[ 0 ].right( 90 )
    snakes[ 0 ].forward( 20 )
    scr.update()

def clr():
    snake.clear()
    snake.home()
scr.listen()
scr.onkey( key="a", fun=lft )
scr.onkey( key="d", fun=rit )
scr.onkey( key="c", fun=clr )
c=True

while True:
    scr.update()
    for i in range( (len( snakes ) - 1), 0, -1 ):
        new_x=snakes[ i - 1 ].xcor()
        new_y=snakes[ i - 1 ].ycor()
        snakes[ i ].goto( new_x, new_y )
    snakes[ 0 ].forward( 20 )



scr.exitonclick()
蟒蛇 python-3.x python-turtle

评论

0赞 Code-Apprentice 11/17/2023
这里的第一步是将代码减少到重现问题所需的代码。也许启动一个新的 python 文件,看看你是否可以编写足够的代码来复制你所询问的问题。
0赞 Code-Apprentice 11/17/2023
您还需要学习如何调试代码。本文提供了一些很好的提示,可以帮助您入门。
0赞 ggorlen 11/17/2023
while True: scr.update()不是一个可靠的事件循环。这会尽可能地猛烈抨击 CPU,导致游戏在不同的机器上以不同的速度运行。首选准时器。我建议用黑色格式化你的代码。

答:

1赞 syed massab 11/17/2023 #1

我已经想通了。问题是我在执行循环时每次都没有使用任何延迟。方块从屏幕上消失了,看起来什么都没发生,只显示一个黑屏。

为此,我通过导入模块在 while 循环中引入了。time.sleep(0.1)time

import time  

while True:
    scr.update()
    time.sleep( 0.1 )
    for i in range( (len( snakes ) - 1), 0, -1 ):
        new_x=snakes[ i - 1 ].xcor()
        new_y=snakes[ i - 1 ].ycor()
        snakes[ i ].goto( new_x, new_y )
    snakes[ 0 ].forward( 20 )