Pygame中的图像未移动


# import pygame module in this program 
import pygame 

# activate the pygame library . 
# initiate pygame and give permission 
# to use pygame's functionality. 
pygame.init() 

# define the RGB value 
# for white colour 
white = (255, 255, 255) 

# assigning values to X and Y variable 
X = 800
Y = 500
xa=0
ya=0  
# create the display surface object 
# of specific dimension..e(X, Y). 
display_surface = pygame.display.set_mode((X, Y )) 

# set the pygame window name 
pygame.display.set_caption('Image') 

# create a surface object, image is drawn on it. 
image = pygame.image.load(r'ball.png') 

# infinite loop 
while True : 
xa+=1
ya+=1
# completely fill the surface object 
# with white colour 
display_surface.fill(white) 

# moving the image surface object 
# to the display surface object at 
display_surface.blit(image, (xa, ya))
# iterate over the list of Event objects 
# that was returned by pygame.event.get() method. 
for event in pygame.event.get() : 

# if event object type is QUIT 
# then quitting the pygame 
# and program both. 
if event.type == pygame.QUIT : 

# deactivates the pygame library 
pygame.quit() 

# quit the program. 
quit() 
# Draws the surface object to the screen.   
pygame.display.update()

作为一个初学者,我正在努力使图像朝着特定的方向移动。但图像并没有移动。我是python的新手,所以我很难弄清楚错误是什么,所以请告诉我问题出在哪里。

这是缩进的问题。您必须更新应用程序循环中的显示,而不是事件循环:

# infinite loop 
while True : 
xa+=1
ya+=1
# completely fill the surface object 
# with white colour 
display_surface.fill(white) 
# moving the image surface object 
# to the display surface object at 
display_surface.blit(image, (xa, ya))
# iterate over the list of Event objects 
# that was returned by pygame.event.get() method. 
for event in pygame.event.get() : 
# if event object type is QUIT 
# then quitting the pygame 
# and program both. 
if event.type == pygame.QUIT : 
# deactivates the pygame library 
pygame.quit() 
# quit the program. 
quit() 
#<--| INDENTATION
# Draws the surface object to the screen.   
pygame.display.update()

注意,应用程序循环在每个帧中执行,但只有在事件发生时才进入事件循环。

将display.update((放在for循环之外,但放在while循环内部。

如果将更新函数放入错误的循环中,请尝试此代码,它应该可以工作。

# import pygame module in this program 
import pygame 
# activate the pygame library . 
# initiate pygame and give permission 
# to use pygame's functionality. 
pygame.init() 
# define the RGB value 
# for white colour 
white = (255, 255, 255) 
# assigning values to X and Y variable 
X = 800
Y = 500
xa=0
ya=0  
# create the display surface object 
# of specific dimension..e(X, Y). 
display_surface = pygame.display.set_mode((X, Y )) 
# set the pygame window name 
pygame.display.set_caption('Image') 
# create a surface object, image is drawn on it. 
image = pygame.image.load(r'ball.png') 
# infinite loop 
while True : 
xa+=1
ya+=1
# completely fill the surface object 
# with white colour 
display_surface.fill(white) 
# moving the image surface object 
# to the display surface object at 
display_surface.blit(image, (xa, ya))
# iterate over the list of Event objects 
# that was returned by pygame.event.get() method. 
for event in pygame.event.get() : 
# if event object type is QUIT 
# then quitting the pygame 
# and program both. 
if event.type == pygame.QUIT : 
# deactivates the pygame library 
pygame.quit() 
# quit the program. 
quit() 
# Draws the surface object to the screen.   
pygame.display.update()

最新更新