Python PyGame如何按顺序使用列表信息?

2024-04-19 02:06:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些用Python扫描图像并从中获取像素数据的代码。然后,它生成包含这些数据的列表。你知道吗

例如,[0,1,2,3]-像素的X位置,[0,0,0,0]-像素的Y位置,[221,0,34102]-像素的红色值,[2100,3102]-像素的绿色值,[121,25,4120]-像素的蓝色值。你知道吗

我想做的是使用这些信息,以便我可以绘制瓷砖的RGB值为基础的X和Y坐标。你知道吗

所以我的问题是:我如何按顺序读回列表中的项目,这样我就可以将一个列表中的第一个项目放入一个新列表,将列表中的第二个项目放入另一个列表,等等。。。你知道吗

期望输出:

X,Y=[0,0],[1,0]等。。。你知道吗

R,G,B=[221,2121],[0100,25]等。。你知道吗

当前代码(可能不相关):

import pygame, sys, os, math, time, pygame.surfarray

## SCREEN ##

pygame.init()
w,h = 800,600; cx,cy = w//2, h//2;
os.environ['SDL_VIDEO_CENTERED'] = '1'
pygame.display.set_caption('Test')
screen = pygame.display.set_mode((w,h),0)
mapsurface = pygame.display.set_mode((w,h),1)

## IMPORT MAPS ##

map_1 = pygame.image.load("assets/maps/map1.png")

## Creates a new 'screen' for map to display (under game screen / invisible) ##

mapsurface.blit(map_1,(0,0))

class MapArray:

    map_array = pygame.surfarray.array3d(mapsurface)
    map_array_X = 0
    map_array_Y = 0
    map_array_output_colour_RED = [0]
    map_array_output_colour_GREEN = [0]
    map_array_output_colour_BLUE = [0]
    map_array_output_X = [0]
    map_array_output_Y = [0]
    DrawTiles = 0
    PRINT = 0

    def __init__(self,pos=(0,0)):
        self.pos = list(pos)

    def update(self,dt,key):

        colourRED_array = self.map_array[self.map_array_X,self.map_array_Y,0]
        colourGREEN_array = self.map_array[self.map_array_X,self.map_array_Y,1]
        colourBLUE_array = self.map_array[self.map_array_X,self.map_array_Y,2]

        ## MAP ARRAY SCAN - Gives X/Y coords and RGB value for each pixel in MAP ##

        if self.map_array_X <= 64 and colourBLUE_array < 255:
            self.map_array_X +=1
            self.map_array_output_colour_RED.append(colourRED_array)
            self.map_array_output_colour_GREEN.append(colourGREEN_array)
            self.map_array_output_colour_BLUE.append(colourBLUE_array)
            self.map_array_output_X.append(self.map_array_X)
            self.map_array_output_Y.append(self.map_array_Y)
            if self.map_array_X == 64 and colourBLUE_array < 255:
                self.map_array_Y+=1
                self.map_array_X = 0

        if colourBLUE_array < 255:
            print (self.map_array_output_X, self.map_array_output_Y, self.map_array_output_colour_RED, self.map_array_output_colour_GREEN, self.map_array_output_colour_BLUE)
            print ("")
        elif self.PRINT == 0: print ("Map Scan Finished!"); print ("");print ("Format: [Xpos_List] [Ypos_List] [colourRED_array] [colourGREEN_array] [colourBLUE_array]"); self.PRINT = 1; self.DrawTiles = 1;

        if key[pygame.K_ESCAPE]: pygame.quit(); sys.exit() #Quits Game#

clock = pygame.time.Clock()
Map_Array = MapArray((0,0))

while True:

    dt = clock.tick(60)
    ## BACKGROUND ##
    screen.fill((100,100,100))

    for event in pygame.event.get():
        if event.type == pygame.QUIT: pygame.quit();sys.exit()

    pygame.display.update()
    key = pygame.key.get_pressed()
    Map_Array.update(dt, key)

Tags: keyselfmap列表outputifdisplay像素