【问题标题】:How can you change the colour of text in pygame on keypress?如何在按键上更改 pygame 中文本的颜色?
【发布时间】:2017-09-17 19:20:52
【问题描述】:

在 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()

【问题讨论】:

    标签: python python-2.7 text colors pygame


    【解决方案1】:

    您需要再次渲染文本。因此,在您更改 colour 的所有 if 语句之后。毕竟,您需要再次致电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))
    

    我已经删除了不相关的内容。只是为了显示添加它的上下文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多