2017-07-30 10 views
1

使用變量來打印一些東西應該在python中工作。爲什麼當我運行我的代碼時不起作用?變量名稱是bliting。如果這個問題可以解決,我該怎麼辦?謝謝。爲什麼這不能工作? - 使用.blit通過一個變量

下面是代碼:

import pygame 

pygame.init() 
window = pygame.display.set_mode((800,600)) 
image = pygame.image.load("o1.png") 
bliting = window.blit(image, (0,0)) 
gameLoop = True 
while gameLoop: 
    for event in pygame.event.get(): 
     if (event.type == pygame.QUIT): 
      gameLoop = False 

#why does typing in the variable name "bliting" not blit my image? 
    bliting 

    window.fill((255,255,255)) 
    pygame.display.flip() 
pygame.quit() 
+0

你有什麼期望時,你引用變量沒有做它的任何操作的情況發生?你是否在尋找它調用'window.blit(image,(0,0))' - 如果是的話,你需要將它包裝在'lambda'中並調用它,例如'bliting = lambda:window.blit(image,(0,0))',然後在你的循環中調用它:'bliting()' – AChampion

+0

是的,那正是我想要做的。謝謝。 – Brandon

回答

2

確實如此,問題是你只塊傳輸的圖像一次,然後屏幕正在不斷填充白色。試試下面的代碼。

import pygame 

pygame.init() 
window = pygame.display.set_mode((800,600)) 
image = pygame.image.load("o1.png") 
bliting = window.blit(image, (0,0)) 
gameLoop = True 
while gameLoop: 
    for event in pygame.event.get(): 
     if (event.type == pygame.QUIT): 
      gameLoop = False 

    bliting 

    pygame.display.flip() 
pygame.quit() 

請注意,我所做的只是刪除屏幕填充。雖然這個「有效」,但更好的選擇是創建一個函數,將圖像與圖像混合並在循環中調用它。另外,爲了將來的參考,請確保你的screen.fill()之後的blitting圖像,而不是之前。雖然在這種情況下並不重要,但人們經常跳過這個簡單的錯誤。

隨意讓我知道如果您有任何類似的問題:)