为了制作我自己的基于瓷砖的 rpg,我有一个问题。我有一本字典,在创建瓦片地图期间,我想要存储成对的瓦片类型/矩形值,例如
{1: rect(0, 0, 32, 32), 2: rect(0, 32, 32, 32)}
我现在的问题是我必须给每个键多个值,因为只有有限数量的瓷砖类型,但每种类型都有多个瓷砖。所以我尝试了这个:
def create(self):
x, y = 0, 0
for row in self.matrix:
for tile in row:
self.surface.blit(tiles[int(tile)].img, (x-camerax, y-cameray))
tiles[int(tile)].rect = pygame.Rect(x-camerax, y-cameray, 32, 32)
if numbers[tiles[int(tile)]] not in collision_list:
collision_list[numbers[tiles[int(tile)]]] = tiles[int(tile)].rect
else:
dummytuple = collision_list[numbers[tiles[int(tile)]]]
collision_list[numbers[tiles[int(tile)]]] = dummytuple, tiles[int(tile)].rect
x += 32
if x >= self.surface.get_width():
y += 32
x = 0
可能有点复杂,因为我不太擅长编写简单的代码。我的问题出在 if else 语句中。我使用它们来检查字典中的一种类型的图块是否collide_list
已经分配了一个或多个矩形。如果是这样,则应将现有的矩形作为第二个值添加到键中。这种工作,但在shell中打印出来:
(((((((((((((((((((((((((((<rect(0, 0, 32, 32)>, <rect(32, 0, 32, 32)>), <rect(64, 0, 32, 32)>), <rect(96, 0, 32, 32)>), <rect(128, 0, 32, 32)>), <rect(160, 0, 32, 32)>), <rect(192, 0, 32, 32)>), <rect(224, 0, 32, 32)>), <rect(256, 0, 32, 32)>), <rect(288, 0, 32, 32)>), <rect(320, 0, 32, 32)>), <rect(352, 0, 32, 32)>), <rect(384, 0, 32, 32)>), <rect(416, 0, 32, 32)>), <rect(448, 0, 32, 32)>), <rect(0, 32, 32, 32)>), <rect(160, 32, 32, 32)>), <rect(192, 32, 32, 32)>), <rect(224, 32, 32, 32)>), <rect(256, 32, 32, 32)>), <rect(288, 32, 32, 32)>), <rect(320, 32, 32, 32)>), <rect(352, 32, 32, 32)>), <rect(384, 32, 32, 32)>), <rect(416, 32, 32, 32)>), <rect(448, 32, 32, 32)>), <rect(0, 64, 32, 32)>), <rect(32, 64, 32, 32)>)
这仅适用于一键(对于垃圾邮件很抱歉)。这阅读起来非常复杂,以后也很难使用。将值连接到字典中的现有值不是更好的可能性吗?任何帮助表示赞赏。