Python,嵌套列表行和列

时间:2013-07-26 22:56:33

标签: python pygame nested-lists

我第一次来这里。 我允许在python嵌套列表上提出一些建议。 我实际上尝试使用python和pygame来制作一个简单的基于网格的游戏。 我想使用列表列表来保存我的char移动的地图。 所以这是我的地图:

basic_map=[['NW',1,1,1,'NE'],
           [1,0,0,0,1],
           [1,0,0,0,1],
           [1,0,0,0,1],
           ['SW',1,1,1,'SE']]

一个正方形,四个角,每个角都有方向。 然后我使用嵌套for来绘制地图:

for x in range (5):
        for y in range (5):
            str3=str(basic_map[x][y])  
            text3=font.render(str3,True,white)
            screen.blit(text3,(100+40*x,100+40*y))

这里开始我的问题,我不明白为什么我的地图显示倒置的行和列。 我有一个解决方案,在显示时反转x和y,但随后运动将无法正常,因为北(x = 0,y = -1)将表现为东方等等。

我不明白为什么自从这个基本的事情发生一周后我就被困住了。 我通过互联网搜索了很多,并且还通过IRC询问但是还不幸运。

我不会问一个准备使用的代码,而是一个简单的解释来理解我的错。我会理解我在说什么,因为我不是英国人。

先谢谢

2 个答案:

答案 0 :(得分:0)

访问多维列表时,例如,有两个整数可用于indeces [x][y]。在您的情况下,您将x放在第一个括号中。这是外部列表中的第x个列表的getter。这是因为您基本上在列表中设置的地图,其中列表中的每个项目都是地图中的一行,每行包含整个列的元素。应该使用x维度变量来访问ROW列表中的项目。尝试像这样设置地图:

basic_map = [['NW',1,1,1'SW'],
             [1,0,0,0,1],
             [1,0,0,0,1],
             [1,0,0,0,1],
             ['NE',1,1,1,'SE']]

这看似违反直觉,但它可以让您更直观地访问地图上的网格。

答案 1 :(得分:0)

当我运行这个时,我得到这个输出

enter image description here

所以你可以做的只是切换NESW以便它可以正常工作

它看起来像这样:

enter image description here

了解其工作原理为您添加0地图列表,如下所示:

self.basic_map=[['NW',1,0,1,'SW'],
           [1,0,0,0,1],
           [1,0,0,0,1],
           [1,0,0,0,1],
           ['NE',1,0,1,'SE']]

当你运行它输出时:

enter image description here

即使你将0放在顶部和底部的行上,程序也会将0放在两侧,这样它基本上就是你的地图并转动它以便水平行成为垂直柱子

希望这有帮助:)