2013-07-26 109 views
0

我第一次來。 我允許問一些關於python嵌套列表的建議。 我其實嘗試使用python和pygame來製作一個簡單的基於網格的遊戲。 我想使用列表來保存我的字符正在移動的地圖。 所以這裏是我的地圖:Python,嵌套列表行和列

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 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詢問,但沒有幸運。

我不問一個準備好使用的代碼,而是一個簡單的解釋來理解我的錯誤。希望你能明白我在說什麼,因爲我不是英國人。

由於通過預先

+0

出了什麼問題?請顯示我們預期的產量和實際產量 – Stephan

+0

M Careaga以不同的方式顯示出產量。我應該發佈他們對此抱歉,因爲我不習慣這個板子。 –

回答

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 s放在側面,所以它基本上採取你的地圖,並把它變成水平行成爲垂直列

希望這可以幫助:)

+0

對不起,沒有張貼鏡頭,因爲你這樣做,它確切地定義事情的方式。 –

+0

我很高興我能幫忙! – Serial

+0

終於我的一個朋友,這是一個很好的Java編程給我一個函數,讓地圖正確顯示'code'def adjustMap(some_map): y = 0 while y

0

當訪問一個多維列表中,有2個整數要用於的indeces [x][y],例如。在你的情況下,你把x放在第一個括號中。這是內部列表中第x個列表的獲取者。這是因爲您設置的地圖基本上是一個列表,其中列表中的每個項目都是地圖中的一行,每一行都包含整個列的元素。應該使用x維變量來訪問行列表中的項目。嘗試建立的地圖是這樣的:

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']] 

這似乎是違反直覺的,但它可以讓你訪問地圖上的網格更直觀地喜歡你想要的。

+0

好的,我理解你的解釋和解決方案,但是由於設計的可讀性和易用性,我真的很想保留我寫的地圖。所以我必須找到一個很好的方法來交換x,y,以便像地圖被設計一樣......我也會以另一種方式打開,但地圖必須保持可讀性。我非常感謝您的時間。 –