我现在是python编程的新手。现在我正在用turtle模块构建一个snake游戏。我想在snake对象的每一部分移动后刷新屏幕。所以我关闭了tracer,并在for循环后使用update函数。
但要做到这一点,我必须导入time模块并使用time.sleep()函数。如果我不使用它,python turtle模块开始没有响应。我想知道为什么我必须使用time函数,为什么我不能直接使用sc.update而不使用time函数。
这是我代码
from turtle import *
from snake import *
import time
sc = Screen()
sc.bgcolor('black')
sc.setup(width=600, height=600)
sc.tracer(0)
# diyego is our snake name
diyego = Snake(10)
run = 1
while run:
#here is the problem
sc.update()
time.sleep(1) #used time.sleep
for i in range(len(diyego.snake_object_list)-1, 0, -1):
infront_item_position = diyego.snake_object_list[i - 1].pos()
diyego.snake_object_list[i].goto(infront_item_position)
diyego.snake_head.forward(10)
sc.exitonclick()
#Snake module
from turtle import *
class Snake():
def __init__(self, number_of_parts):
"""Should pass the lenght of snake"""
self.snake_object_list = []
self.create_snake_parts(number_of_parts)
self.snake_head = self.snake_object_list[0]
def create_snake_parts(self, number_of_parts):
""" Get number of parts which snake shuld have and create snake it"""
x_cor = 0
for i in range(number_of_parts):
snake = Turtle()
snake.speed(0)
snake.shape("circle")
snake.color('white')
snake.penup()
snake.setx(x=x_cor)
self.snake_object_list.append(snake)
x_cor += -20
我只是想知道为什么乌龟没有React,当我删除的时间。sleep()
1条答案
按热度按时间3pvhb19x1#
你所描述的是可能的,但问题不在于缺少
sleep()
函数的使用,而是你(有效地)使用了while True:
,它在turtle这样的事件驱动世界中是没有位置的。让我们使用ontimer()
事件重新编写代码,使snake的基本运动成为snake本身的一种方法: