我有一個 pygame。其中有幾個嵌套的while回圈,一次運行所有回圈完成一輪,我如何讓回圈不斷進行,永不停止?
重復{我有一個 pygame。其中有幾個嵌套的while回圈,一次運行所有回圈完成一輪,我如何讓回圈不斷進行,永不停止?我有一個 pygame。其中有幾個嵌套的while回圈,一次運行所有回圈完成一輪,我如何讓回圈不斷進行,永不停止?我有一個 pygame。其中有幾個嵌套的while回圈,一次運行所有回圈完成一輪,我如何讓回圈不斷進行,永不停止?我有一個 pygame。其中有幾個嵌套的while回圈,一次運行所有回圈完成一輪,我如何讓回圈不斷進行,永不停止?}重復
def running_game():
import pygame
pygame.init()
window = pygame.display.set_mode((640, 480))
robot = pygame.image.load("robot.png")
x = 0
y = 0
velocity = 5
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
window.fill((0, 0, 0))
window.blit(robot, (x, y))
pygame.display.flip()
print(x)
x = velocity
if x robot.get_width() >= 640:
#break
#print(x)
while True:
window.fill((0, 0, 0))
window.blit(robot, (x, y))
pygame.display.flip()
y = velocity
#clock.tick(60)
if y robot.get_height() >= 480:
#break
velocity = -velocity
while True:
window.fill((0, 0, 0))
window.blit(robot, (x, y))
pygame.display.flip()
x = velocity
if x <= 0:
#break
while True:
window.fill((0, 0, 0))
window.blit(robot, (x, y))
pygame.display.flip()
y = velocity
if y <= 0:
velocity = -velocity
break
clock.tick(120)
if __name__ == "__main__":
while True:
running_game()
uj5u.com熱心網友回復:
你有太多的嵌套在那里。因為所有的內部while回圈永遠不會終止,程式也永遠不會回傳pygame.event.get()呼叫,這就是為什么您還會發現程式不回應輸入(包括關閉視窗)的原因。還有很多重復的代碼。
最好將機器人的當前方向保持在一個變數中,我們稱之為direction,并在它到達邊緣時更改它的值。為了使代碼更易于理解,您可以在頂部定義一些常量:
UP = 0
RIGHT = 1
DOWN = 2
LEFT = 3
def running_game():
import pygame
pygame.init()
window = pygame.display.set_mode((640, 480))
robot = pygame.image.load("robot.png")
x = 0
y = 0
velocity = 5
direction = RIGHT
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
window.fill((0, 0, 0))
window.blit(robot, (x, y))
pygame.display.flip()
if direction == UP:
y -= velocity
if y <= 0:
direction = RIGHT
elif direction == RIGHT:
x = velocity
if x robot.get_width() >= 640:
direction = DOWN
elif direction == DOWN:
y = velocity
if y robot.get_height() >= 480:
direction = LEFT
elif direction == LEFT:
x -= velocity
if x <= 0:
direction = UP
clock.tick(120)
if __name__ == "__main__":
while True:
running_game()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432758.html
上一篇:將第一次出現的x附加到串列并中斷回圈。但是,如果y出現在x之前,則附加第一次出現的y,然后忽略y直到第一次出現x
