有pygame可以將整數識別爲顏色的兩種方式:
- RGB的3元素序列,其中每個元素的範圍介於0-255之間。
- 映射的整數值。
如果您希望能夠有一個數組,其中0-255之間的每個整數代表灰度陰影,則可以使用此信息創建自己的灰度數組。您可以通過定義一個類來創建自己的數組。
第一種方法是創建一個numpy數組,每個元素是一個3元素序列。
class GreyArray(object):
def __init__(self, size, value=0):
self.array = np.zeros((size[0], size[1], 3), dtype=np.uint8)
self.array.fill(value)
def fill(self, value):
if 0 <= value <= 255:
self.array.fill(value)
def render(self, surface):
pygame.surfarray.blit_array(surface, self.array)
創建基於映射的整數值的類可以是一個有點抽象。我不知道這些值是如何映射的,但通過快速測試,可以很容易地確定每個灰色陰影的分隔值爲16843008
,從0
的黑色開始。
class GreyArray(object):
def __init__(self, size, value=0):
self.array = np.zeros(size, dtype=np.uint32)
self.array.fill(value)
def fill(self, value):
if 0 <= value <= 255:
self.array.fill(value * 16843008) # 16843008 is the step between every shade of gray.
def render(self, surface):
pygame.surfarray.blit_array(surface, self.array)
簡短的演示。按1-6更改灰色陰影。
import pygame
import numpy as np
pygame.init()
s = 300
screen = pygame.display.set_mode((s, s))
# Put one of the class definitions here!
screen_array = GreyArray(size=(s, s))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
screen_array.fill(0)
elif event.key == pygame.K_2:
screen_array.fill(51)
elif event.key == pygame.K_3:
screen_array.fill(102)
elif event.key == pygame.K_4:
screen_array.fill(153)
elif event.key == pygame.K_5:
screen_array.fill(204)
elif event.key == pygame.K_6:
screen_array.fill(255)
screen_array.render(screen)
pygame.display.update()
pygame使用顏色作爲三個數字(紅色,綠色,藍色),所以白色是(0,0,0),黑色是(255,255,255) – furas