gpt4 book ai didi

python - 为什么我的 for 循环只捕获 699 的 y 值而不是从 0 到 699 的值?

转载 作者:行者123 更新时间:2023-12-03 19:42:28 26 4
gpt4 key购买 nike

我正在 pygame 中编写街机游戏。我希望每个黑色像素都成为玩家的行走表面。我正在尝试获取屏幕上的每个黑色像素并将其添加到字典中。然后,我想将玩家的 x 和 y 坐标与 dict 条目进行比较。当我打印 dict Pixels 时,它只打印 y=699 和 x 值范围从 0 到 1250。如何通过将每个黑色像素添加到 dict 来与玩家坐标进行比较来制作可行走的黑色表面?

Pixels = {}

for x1 in range(0, 1250):
for y2 in range(0, 700):
xy12 = disp.get_at((x1, y2))
if xy12[0] <= 3 and xy12[1] <= 3 and xy12[2] <= 3: #the <= just makes it so rgb values of 3 are close enough to black that it is acceptable...
Pixels[x1] = y2

def pglc():
global groundlim
if playerx in Pixels:
if playery == Pixels[playerx]:
groundlim = playery

print Pixels

最佳答案

这条线是你的问题

Pixels[x1] = y2

在内部循环中,您将覆盖每一步中的值,因此您看到的最后一个值是 699 (但在满足条件之前,它具有从 0 到 698 的所有值)。你可以制作两个维度:
Pixels[x1] = list()

然后在内部循环中:
Pixels[x1].append(y2)

总共:
Pixels = {}

for x1 in range(0, 1250):
Pixels[x1] = list()
for y2 in range(0, 700):
xy12 = disp.get_at((x1, y2))
if xy12[0] <= 3 and xy12[1] <= 3 and xy12[2] <= 3:
Pixels[x1].append(y2)

或者 - 如果你对 dict 理解(加上它使用 all(...) ):
Pixels = {x1:
[y2
for y2 in range(0, 700)
for xy12 in [disp.get_at((x1, y2))]
if (all(cond <= 3 for cond in xy12[0:2]))]
for x1 in range(0, 1250)}

关于python - 为什么我的 for 循环只捕获 699 的 y 值而不是从 0 到 699 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61368974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com