2017-06-06 107 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