本帖 OI 无关,违规提醒我自删
我通过 python 的 pygame.Color() 函数得到窗口的每个像素的颜色信息,并将其存进一个列表里,但是以下代码却出现了问题
import sys,pygame
# 创建一个窗口
screen=pygame.display.set_mode((800,800))
image=pygame.image.load("QQ图片20221230223116.png")
screen.blit(image,(0,0))
run=True
A=[[2,0],[0,2]]
# 得到窗口像素信息
pixelarray=pygame.PixelArray(screen)
c=[]
color=[]
# 本人刚学 python 3天,只会这样子初始化定义列表……
for i in range(0,800):
c.append(" ")
for i in range(0,800):
color.append(c)
f=False
# 枚举每个像素,将窗口像素颜色信息存进 color
for i in range(0, 800):
for j in range(0, 800):
color[i][j]=pygame.Color(pixelarray[i,j])
# 测试部分
print(color[234][12])
print(pygame.Color(pixelarray[234,12]))
在主循环中,我将 pygame.Color(pixelarray[i,j]) 的信息存入了color[i][j]。
后来程序运行不理想,我随便挑取了一个像素 (代码中的(234,12))输出其在 color 中的颜色和真实颜色 pygame.Color(pixelarray[]) 进行对比,发现他们居然不相等了,color[i][j] 的值在循环中会被多次改变!
后来经过一些测试,发现每个 color 的值都会在主循环中被多次改变,我很好奇这是为什么
希望各位大佬能分析一下这个代码的bug(欢迎D我)