gpt4 book ai didi

python - Python Pygame Tetris 克隆中的重复行

转载 作者:行者123 更新时间:2023-12-04 07:44:44 24 4
gpt4 key购买 nike

我已经研究这个问题一段时间了,并且已经画了一个空白,所以希望得到一些帮助。
我正在使用 Python 和 Pygame 制作一个简单的俄罗斯方块克隆。问题是检测已完成行的过程有时会将克隆行添加到新 GRID,因此任何影响原始行的内容也会影响克隆行。
这是删除已完成行的代码:

# create an empty grid
newGRID = []

fullRowsCount = 0
for row in reversed(GRID):
# count number of non-zero blocks in row
rowBlockCount = sum(col > 0 for col in row)

# if number of non-zero blocks is less than the width of grid then copy to newGRID
if rowBlockCount < GRID_SIZE.width:

# insert non-full row into newGRID
newGRID.insert(0, row)

else:
# increment this counter in order to know number of blank rows to add to top of newGRID
fullRowsCount += 1

# if there are any full rows then they're not included in newGRID so blank rows need adding to the top
if fullRowsCount:
newGRID = [[0] * GRID_SIZE.width] * fullRowsCount + newGRID
# update GRID to the newGRID
GRID = newGRID
感谢您的时间 :)

最佳答案

该声明

newGRID = [[0] * GRID_SIZE.width] * fullRowsCount + newGRID
不会做你期望的。它创建 1 列,由网格中的所有行共享。
注意,下面代码的输出
newGRID = [[0] * 3] * 3
newGRID[0][0] = 1
print(newGRID)

[[1, 0, 0], [1, 0, 0], [1, 0, 0]]


您必须为每一行创建一个新列:
newGRID = [[0] * GRID_SIZE.width for _ in range(fullRowsCount + newGRID)]

关于python - Python Pygame Tetris 克隆中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67254552/

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