2013-03-06 56 views
0

我試圖爲我的遊戲顯示一個背景圖片,但是當我點擊它時,它只會在黑色背景的屏幕上顯示我的主要可玩角色。任何人都可以幫助我解決這個問題。爲什麼我不能在字符圖像曝光的同時使背景圖像呈現?

下面的代碼:

import sys, pygame, os 
pygame.init() 

os.environ['SDL_VIDEO_WINDOW_POS'] = 'center' 
pygame.display.set_caption("Game") 

size = width, height = 320, 240 
xREVERSEspeed = [-2, 0] 
xspeed = [2, 0] 


screen = pygame.display.set_mode(size) 

ball = pygame.image.load("turret.png").convert_alpha() 
background = pygame.image.load("scoreframe.png").convert() 
ballrect = ball.get_rect(center=(160, 231)) 
BACKGROUNDrect = background.get_rect() 
clock = pygame.time.Clock() 


while 1: 
    clock.tick(60) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 


if event.type == pygame.KEYDOWN: 
    if event.key == pygame.K_LEFT: 
     print "I've pressed the LEFT arrow button." 
     ballrect = ballrect.move(xspeed) 
     print ballrect 
    if event.key == pygame.K_RIGHT: 
     print "I've pressed the RIGHT arrow button." 
     ballrect = ballrect.move(xREVERSEspeed) 
     print ballrect 


screen.blit(ball, ballrect, background, BACKGROUNDrect) 
pygame.display.flip() 

回答

1

首先,你的縮進是錯誤的,但我認爲這是一個錯字。你的事件部分與你的遊戲while循環處於同一級別,它應該在裏面。也有bl and和fl too。 我也看到你正在使用錯誤的功能。從pygame的文檔:

Surface.blit(source, dest, area=None, special_flags = 0): return Rect 

其中的blit表面sourceSurface在由dest給定的目標,以任選的area其是矩形限定源表面的表面下被位圖混合。 你必須單獨提取角色和背景圖像。所以,你應該這樣來做:

screen.blit(background,(0,0)) 
screen.blit(ball,ballrect) 
1

我不知道,如果你搞砸了,當你粘貼在這裏,但你的「如果event.type」是不是整數的「而1:」

反正試試這個:

while 1: 
    clock.tick(60) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 


    if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_LEFT: 
      print "I've pressed the LEFT arrow button." 
      ballrect = ballrect.move(xspeed) 
      print ballrect 
     if event.key == pygame.K_RIGHT: 
      print "I've pressed the RIGHT arrow button." 
      ballrect = ballrect.move(xREVERSEspeed) 
      print ballrect 
    screen.blit(background,(BACKGROUNDrect)) 
    screen.blit(ball,(ballrect)) 
    pygame.display.flip() 
+0

這是怎麼回答有什麼不同? – 2013-03-06 16:58:48

+0

我想我們都在同一時間回覆 – tsa 2013-03-06 22:45:34

+0

我已經提前10分鐘回覆。 – 2013-03-07 12:58:59

相關問題