我想創建一個類似於幾何破折號的遊戲。我有立方體的所有圖像,但它們都是灰色和白色 - 這是爲了讓用戶選擇顏色。着色圖像Pygame
我有兩個變量,colour_1
和colour_2
。 colour_1
應該是灰色的,而colour_2
應該是白色的。如果我說變量是什麼,我將如何修改圖像以獲得正確的顏色?
上的圖像的顏色不全部相同,邊緣混合,使得圖像更平滑。這可能會導致併發症。
我想創建一個類似於幾何破折號的遊戲。我有立方體的所有圖像,但它們都是灰色和白色 - 這是爲了讓用戶選擇顏色。着色圖像Pygame
我有兩個變量,colour_1
和colour_2
。 colour_1
應該是灰色的,而colour_2
應該是白色的。如果我說變量是什麼,我將如何修改圖像以獲得正確的顏色?
上的圖像的顏色不全部相同,邊緣混合,使得圖像更平滑。這可能會導致併發症。
編寫類並使用顏色代碼變量實例化對象。
您可以編寫一種方法,將狀態特定的數據與形狀/圖像結合使用。
下面是基於它
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)
應更快,但它不適合我,所以我將數組轉換爲表面然後將其轉移到屏幕上。
如果不回答你的問題也許你需要這些:
做一個快速搜索想出了surfarray這你可以學習一些關於[這裏](http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html)。 –