2017-11-18 23 views
1

似乎每次我在pygame中創建一些東西時,都必須切換行和列才能正確打印。例如,如果我有:Pygame似乎翻轉了行和列?

for col in range(COLS): 
    board[3][col] = 'tree' 

我建立一個繪製函數繪製子畫面每當板細胞等於3。然而,它繪製的樹木的而不是水平的垂直線。因爲我想遍歷第三行中的所有列,所以正確的輸出應該是一個水平的樹狀行。

這只是衆多的一個例子,但沒有人有任何線索爲什麼pygame這樣做?

+0

您的問題無關,同pygame的做你不事件中使用pygame的代碼在你的問題。你在數據組織方面相當麻煩。你把數據保存爲'[row] [column]',但是也許你應該把它保存爲'[column] [row]'。 '[row] [column]'表示'(y,x)',但所有繪圖函數都使用'(x,y)'。或者你必須記住你的數據(和數學矩陣)使用'(y,x)',所有繪圖系統都使用'(x,y)' – furas

+0

請發佈[最小的,可運行的示例](https:// stackoverflow .COM /幫助/ MCVE)。 – skrx

回答

1

我認爲你的問題是因爲在現實世界中我們使用兩個系統來描述位置。

首先使用(x,y),您可以在

  • 電腦屏幕
  • 數學看到的 - 點上圖
  • 所有的繪圖模塊(不僅PyGame,不僅在Python

第二次使用(y,x),你可以在

中看到
  • 數學矩陣(row, column)
  • 房間的號碼(floor, door)
  • 門票cimena (row, place)
  • 地理位置(latitude, longitude)

你使用第二個系統(y,x)保留的數據,但Pygame的先用系統(x,y)繪製它
所以你必須記住切換(y,x)(x,y)[row][column][column][row]
或你必須保持數據[column][row](x,y)