2015-04-06 125 views
-1

我一直在pygame工作,我想要一些鍵盤輸入幫助。如果按下某個鍵,我會嘗試放入,背景會變成紅色。不幸的是,它不起作用。鍵盤輸入背景

也許是因爲我沒有打算或在語法上犯了錯誤?

import pygame 
pygame.init() 
white = (34,34,34) 
black=(0,0,0) 
red=(255,0,0) 
silver=(110,108,108) 
yellow=(193,206,104) 
yellow2=(213,230,100) 
gameDisplay = pygame.display.set_mode((800,600)) 
pygame.display.set_caption('Slither') 

gameExit=False 

lead_x = 300 
lead_y = 300 

while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      gameExit = True 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       lead_x -= 10 
       print("LEFT") 

      if event.key == pygame.K_RIGHT: 
       lead_x +=10 
       print("RIGHT") 
      if event.key == pygame.K_UP: 
       lead_y -=10 
       print("UP") 
      if event.key == pygame.K_DOWN: 
       lead_y +=10 
       print("DOWN") 
      if event.key == pygame.K_a: 
       gameDisplay.fill(red) 

    gameDisplay.fill(black) 
    pygame.draw.rect(gameDisplay, white,[lead_x,lead_y,30,100]) 
    pygame.draw.ellipse(gameDisplay, white,[-35+lead_x,-54+lead_y,75,100]) 
    pygame.draw.ellipse(gameDisplay, red,[-25+lead_x,-35+lead_y,20,34]) 
    pygame.draw.ellipse(gameDisplay, red,[10+lead_x,-35+lead_y,20,34]) 
    pygame.draw.rect(gameDisplay, silver,[470+lead_x,-35+lead_y,75,30]) 
    pygame.draw.ellipse(gameDisplay, yellow,[400+lead_x,-35+lead_y,75,30]) 


    pygame.display.update() 

pygame.quit() 
quit() 

回答

1

填充紅色的屏幕,但一旦for循環結束,你的顯示更新之前畫在它與黑色。在if之內不是直接調用fill,而是通過用新顏色更新background_color變量,並在事件循環完成後使用它作爲填充顏色,使更改持久化。

#snip 
background_color = black 
while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      gameExit = True 
     if event.type == pygame.KEYDOWN: 
      #snip 
      if event.key == pygame.K_a: 
       background_color = red 

    gameDisplay.fill(background_color) 
    pygame.draw.rect(gameDisplay, white,[lead_x,lead_y,30,100]) 
    #snip