当我启动程序并按第一个键时,程序会冻结。任何人都可以告诉我为什么这不起作用,并给我一个可能的解决方案我的问题?
if event.key == pygame.K_UP:
key = False
while key == False:
schlange.move(0, -50)
if event.key == pygame.K_DOWN:
key = True
while key == True:
schlange.move(0, 50)
if event.key == pygame.K_LEFT:
key = False
while key == False:
schlange.move(-50, 0)
if event.key == pygame.K_RIGHT:
key = True
while key == True:
schlange.move(50, 0)
def move(self, x_change, y_change):
self.screen.fill(BLACK)
self.x_change = x_change
self.y_change = y_change
self.startx += x_change
self.starty += y_change
self.rectsize = (self.startx, self.starty)
pygame.draw.rect(self.screen, self.color, [self.startx, self.starty, self.width, self.height])
提前致谢!
答案 0 :(得分:1)
代码中的格式设置已关闭 - 但无论如何 - 每个部分中的代码如下所示:
key = False
while key == False:
schlange.move(0, -50)
永远不会完成。 while循环将始终评估为True,因为key == False
始终为true,并且永远不会更改。所以循环永远不会结束。
答案 1 :(得分:0)
它可能是这样的
speed = (0, 0)
While True:
# --- events ---
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
speed = (0, -50)
elif event.key == pygame.K_DOWN:
speed = (0, 50)
if event.key == pygame.K_LEFT:
speed = (-50, 0)
if event.key == pygame.K_RIGHT:
speed = (50, 0)
# --- all updates (without draws) ---
schlange.move(speed[0], speed[1])
# --- all draws (without updates) ---
# ...