level 6
喵喵陳
楼主
一段把1個Surface的某RGB顏色轉成另一顏色的code
import pygame
pygame.init()
win=pygame.display.get_desktop_sizes()[0]
ww=win[0]
wh=win[1]
screen = pygame.display.set_mode((ww/2,wh/2),pygame.NOFRAME)
clock = pygame.time.Clock()
fontlist=pygame.font.get_fonts()
font=pygame.font.Font(None,12)
pic = pygame.Surface((16,16)) #這行做了一個16*16的Surface
pic.fill((255,255,255)) #油白了
screen.blit(pic,(0,0))#先看看....
s=pygame.image.tobytes(pic, 'RGBX' ) #把pic轉為32 bit格式的byte object,想省記憶體的可以用RGB省1/3....
#就是1張2048*2048的圖省4M...30年前這真的要省的......
a=list(s)#把s轉成array
for i in range(0,len(a),4):#因為RGBX,RGBA等32bit一個色4byte...
a[i]=0# R是a[i], G是a[i+1], B是a[i+2]還有個不用的a[i
+3
]...正常會r,g,b,x=a然後if判定再賦值...不過我只是驗證變色...
b=bytes(a)#把改完的a合成byte object b
pic = pygame.image.frombytes(b,(16,16),'RGBX') #一個新的圖....我只是用回舊變數省點記憶體....
screen.blit(pic,(17,0)) #貼去旁邊...
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)

用pygame寫遊戲真的很簡單......我這是怪物改色成新怪物程式碼...RPG慣例..
2024年03月12日 14点03分
1
import pygame
pygame.init()
win=pygame.display.get_desktop_sizes()[0]
ww=win[0]
wh=win[1]
screen = pygame.display.set_mode((ww/2,wh/2),pygame.NOFRAME)
clock = pygame.time.Clock()
fontlist=pygame.font.get_fonts()
font=pygame.font.Font(None,12)
pic = pygame.Surface((16,16)) #這行做了一個16*16的Surface
pic.fill((255,255,255)) #油白了
screen.blit(pic,(0,0))#先看看....
s=pygame.image.tobytes(pic, 'RGBX' ) #把pic轉為32 bit格式的byte object,想省記憶體的可以用RGB省1/3....
#就是1張2048*2048的圖省4M...30年前這真的要省的......
a=list(s)#把s轉成array
for i in range(0,len(a),4):#因為RGBX,RGBA等32bit一個色4byte...
a[i]=0# R是a[i], G是a[i+1], B是a[i+2]還有個不用的a[i
+3
]...正常會r,g,b,x=a然後if判定再賦值...不過我只是驗證變色...
b=bytes(a)#把改完的a合成byte object b
pic = pygame.image.frombytes(b,(16,16),'RGBX') #一個新的圖....我只是用回舊變數省點記憶體....
screen.blit(pic,(17,0)) #貼去旁邊...
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)

用pygame寫遊戲真的很簡單......我這是怪物改色成新怪物程式碼...RPG慣例..