2017-06-06 58 views
1
import pygame, random 
pygame.init() 
screen = pygame.display.set_mode((700,500)) 
ball = pygame.image.load('C://python32/ball.jpg') 
brick = pygame.image.load('C://python32/brick.jpg') 
rect1 = ball.get_rect() 
rect2 = brick.get_rect() 
screen.fill((255,255,198)) 
screen.blit(ball,rect1) 
screen.blit(brick,rect2) 
pygame.display.flip() 
if rect1.colliderect(rect2): 
    x=random.randrange(0,550) 
    y=random.randrange(0,350) 
    rect2.move(x,y)   #<-------This part 
    pygame.display.flip() 

我有2个图像球和砖。当我将它们加载到pygame上时,两个图像相撞。所以如果rect1.colliderect(rect2)应该工作。我通过放置打印功能来测试。但是rect2.move不工作,它不会显示pygame上的变化。哪里不对?rect搬不工作

回答

1

pygame.Rect.move用新的位置创建一个新的位置对象,如果您稍后要使用它,则必须将其分配给一个变量。

如果你只是想修改现有的矩形,你可以调用move_ip方法(IP代表就地),使矩形是仍然可以与新位置相同的对象。

+0

你在while循环中有你的代码吗?如果不是,则必须在更新位置后再将图像覆盖并再次调用“pygame.display.flip()”。 顺便说一句,你不应该为你的图像使用绝对路径,你也不应该将你的文件和其他资源存储在你的Python目录中。 – skrx