键盘输入背景
Keyboard Input Background
我一直在 pygame 工作,我需要一些键盘输入方面的帮助。我试过如果按下 a 键,背景会变成红色。不幸的是,它不起作用。
可能是我无意或语法错误?
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()
你是用红色填充屏幕,但是一旦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
我一直在 pygame 工作,我需要一些键盘输入方面的帮助。我试过如果按下 a 键,背景会变成红色。不幸的是,它不起作用。
可能是我无意或语法错误?
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()
你是用红色填充屏幕,但是一旦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