2014-01-30 93 views
1

對於代碼優化的目的,我要創建一個包含40個等於方塊(10x10px)的2D陣列。每個方塊代表顯示窗口的1 \ 40(400×400px)。2D陣列的正方形的初始化和選擇

我填充標準雙for循環的方法的2D陣列。

int col = 40; 
    int row = 40; 
    int boxPosition = 0; //Position of the box (coordinates) 
    Integer[][] boxes = new Integer[40][40]; 

    for (int i = 0; i < col; i++) { 
     for (int j = 0; j < row; j++) { 
      boxes[i][j] = boxPosition; 
      boxPosition += 10; //Creates a 10px box. 
     } 
     boxPosition = 0; //Resets box size for next column 
    } 

有幾個圈在這個方案。我們有一艘向敵人(圓圈)發射導彈(圓圈)的船(圓圈)。

我想運行碰撞檢測時,纔會有子彈+在廣場的一個敵人。這將大大優化代碼。

的問題是...我怎麼創建這些廣場掀起了二維數組的?我如何選擇每個廣場?我如何測試導彈和敵人是否在同一個方格內?

代碼示例都大大appreicated。

謝謝。

+0

boxSize是什麼意思?如果它是「盒子」的大小,那麼它們並不完全相同。如果這是一個地位問題,那麼你需要更清楚它的含義。 – JLewkovich

+0

偉大的一點。是的,這是我的立場,我只是解決了這個問題。 – Gregg1989

+0

因此,將座標保存爲一個值並不像那樣。如果你在2D網格上,至少需要兩個座標值 – JLewkovich

回答

2

我不知道你是用二維數組做什麼,或者爲什麼它包含整數或爲什麼它包含在每列的規模日益擴大,而是做基於網格的碰撞,一般的方法是有一個二維數組GameObjects的。你的情況中的一個遊戲對象可能是一艘船,一個導彈或一個敵人。

當您的某個GameObjects想要移動時,您只需檢查GameObjects的二維數組以查看您想要移動到的正方形中已有的內容。如果它是空的,你可以做這個舉動。如果它不是空的,你會發生碰撞。

+0

有道理。你能提供一些僞代碼嗎?這真的會真的幫助我很多。 – Gregg1989

+0

當你遇到特定的問題時,你如何嘗試一些東西併發布問題?但是,僞代碼與我的最後一段實際上看起來不太一樣。 –

+0

我完全按照你的要求做了。請查看我的新帖子http://gamedev.stackexchange.com/questions/69686/grid-based-collision-detection-between-circles?noredirect=1#comment125529_69686 – Gregg1989