import pygame, sys
pygame.init()
screen = pygame.display.set_mode([800,600])
white = [255, 255, 255]
red = [255, 0, 0]
screen.fill(white)
pygame.display.set_caption("My program")
pygame.display.flip()
background = input("What color would you like?: ")
if background == "red":
screen.fill(red)
running = True
while running:
for i in pygame.event.get():
if i.type == pygame.QUIT:
running = False
pygame.quit()
ユーザーにどのような背景色を使用したいかを尋ねようとしています。ユーザーが赤を書いた場合、色は変わらず、白のままです。
次に表示を更新すると、赤で再描画されます。 pygame.display.update()
を追加します:
_background = input("What color would you like?: ")
if background == "red":
screen.fill(red)
pygame.display.update()
_
または、(条件付きで)背景色を変更した後にpygame.display.flip()
を移動することもできます。
現在の色を保存する変数を作成します。
currentColor = (255,255,255) # or 'white', since you created that value
_background = input("What color would you like?: ")
if background == "red":
currentColor = red # The current color is now red
_
ループの中:
_while running:
for i in pygame.event.get():
if i.type == pygame.QUIT:
running = False
pygame.quit()
screen.fill(currentColor) # Fill the screen with whatever the stored color is.
pygame.display.update() # Refresh the screen, needed whatever the color is, so don't remove this
_
したがって、画面の色を変更する必要がある場合は、currentColorを必要な色に変更するだけで、画面が自動的にその色に変わります。例:
_if foo:
currentColor = (145, 254, 222)
Elif bar:
currentColor = (215, 100, 91)
_
ところで、red = (255, 0, 0)
のように、色をリストではなくタプルとして保存する方が良いと思います。
また、ループ内以外の場所ではpygame.display.update(またはフリップ)は必要ありません。この関数の機能は、描画されたすべてのアイテムの最新の形状/値を取得して画面にプッシュするだけなので、ループの最後のアイテムとしてのみ必要なので、すべてが表示されます。