我一直在使用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()
答案 0 :(得分:1)
你 用红色填充屏幕,但是一旦for
循环结束,你就会在显示更新前用黑色涂在它上面。您可以通过使用新颜色更新fill
变量,并在事件循环结束后将其用作填充颜色,而不是直接在if
内调用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