2017-04-20 34 views
1

對於pygame,我是一個完整的業餘愛好者,並且我需要製作一個程序,當文本以不同的方向行進時,它將更改文本的顏色。這意味着在每次按鍵時(上,下,左,右)顏色都會有所不同。到目前爲止,我已經能夠讓文字在每個方向上移動,但是我不明白如何讓顏色改變!任何幫助將非常感激。如何在keypress中更改pygame中的文本顏色?

import pygame 
import sys 
pygame.init() 
screenSize = (800,600) 
screen = pygame.display.set_mode((screenSize),0) 
go = True 

#Define Colours 
WHITE = (255,255,255) 
GREEN = (0,255,0) 
RED = (255,0,0) 
BLUE = (0,0,255) 
BLACK = (0,0,0) 
FUCHSIA = (255, 0, 255) 
GRAY = (128, 128, 128) 
LIME = (0, 128, 0) 
MAROON = (128, 0, 0) 
NAVYBLUE = (0, 0, 128) 
OLIVE = (128, 128, 0) 
PURPLE = (128, 0, 128) 
TEAL = (0,128,128) 

x = 25 
y = 25 
dx = 0 
dy = 0 
colour = RED 

font = pygame.font.SysFont ("Arial", 72) 
text = font.render ("Hello!", True, (colour)) 

while go: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      go = False 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       dx = -5 
       colour = GRAY 

      elif event.key == pygame.K_RIGHT: 
       dx = 5 
       colour = MAROON 

      elif event.key == pygame.K_UP: 
       dy = -5 
       colour = BLACK 

      elif event.key == pygame.K_DOWN: 
       dy = 5 
       colour = NAVYBLUE 

      elif event.key == pygame.K_c: 
       x = (400 - (text.get_width()) // 2) 
       y = (300 - (text.get_height()) // 2) 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
       dx = 0 
      elif event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
       dy = 0 

    x = x + dx 
    y = y + dy 

    screen.fill(WHITE) 
    screen.blit (text, (x,y)) 


    pygame.display.update() 

回答

1

您需要再次呈現文本。所以,如果你改變了colour之後所有的陳述。畢竟你需要再次撥打font.render()

if event.type == pygame.KEYDOWN: 
    if event.key == pygame.K_LEFT: 
     colour = GRAY 
    elif event.key == pygame.K_RIGHT: 
     colour = MAROON 
    elif event.key == pygame.K_UP: 
     colour = BLACK 
    elif event.key == pygame.K_DOWN: 
     colour = NAVYBLUE 

    text = font.render("Hello!", True, (colour)) 

我已經刪除了不相關的東西。只是爲了顯示添加它的位置的上下文。

+0

@Student你解決了你的問題嗎? – Vallentin