2016-03-17 122 views
2

我想創建一個類似於幾何破折號的遊戲。我有立方體的所有圖像,但它們都是灰色和白色 - 這是爲了讓用戶選擇顏色。着色圖像Pygame

我有兩個變量,colour_1colour_2colour_1應該是灰色的,而colour_2應該是白色的。如果我說變量是什麼,我將如何修改圖像以獲得正確的顏色?

Cube01

上的圖像的顏色不全部相同,邊緣混合,使得圖像更平滑。這可能會導致併發症。

+1

做一個快速搜索想出了surfarray這你可以學習一些關於[這裏](http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html)。 –

回答

0

編寫類並使用顏色代碼變量實例化對象。

您可以編寫一種方法,將狀態特定的數據與形狀/圖像結合使用。

1

,我發現這個網站上Fishstick提出 enter image description here

下面是基於它

img_surface = pygame.image.load("image.gif")    # Load image on a surface 
img_array = pygame.surfarray.array3d(img_surface)   # Convert it into an 3D array 
colored_img = numpy.array(img_array)      # Array thing 
colored_img[:, :, 0] = 255 # <-- Red 
colored_img[:, :, 1] = 128 # <-- Green 
colored_img[:, :, 2] = 0  # <-- Blue 
img_surface = pygame.surfarray.make_surface(colored_img) # Convert it back to a surface 
screen.blit(img_surface, (0, 0))       # Draw it on the screen 

這種變化的每個像素的顏色值的工作代碼。如果將紅色設置爲255,則會爲所有像素添加255紅色。但是,如果將255設置爲所有顏色,則圖像將變爲白色。

請注意,您需要安裝NumPy的使用這一點,你可以通過這樣做:

pip install numpy 

你也可以嘗試將最後兩行

pygame.surfarray.blit_array(screen, colored_img) 

應更快,但它不適合我,所以我將數組轉換爲表面然後將其轉移到屏幕上。

如果不回答你的問題也許你需要這些: