2014-03-02 41 views
0

我正在嘗試做我的學校項目「Tron」。我是新手,當談到編程時......我和arraylist做了一些碰撞,他們工作的很好。但是我不能和其他物體做碰撞蛇......我使用這個: snake1x和snake1y是座標第一條蛇和障礙物X是包含其他對象的座標的數組列表。Java tron Collision,Combobox

for(int l=0;l<obstacleX.size();l++) { 
if((snake1x == obstacleX.get(l)) && (snake1y == obstacleY.get(l))) { 
running = false; 
} 
} 

我有對象已經繪製在我的遊戲,但蛇會只是通過throught它... :( 奇怪的是,我這樣做,有着相近的方法對蛇之間的碰撞和正常工作:)

我的第二個問題是與組合框並選擇了蛇的顏色..

if (snake1 = true) { 
for (int p = 0; p < pathx1.size(); p++) { 
    g.setColor(Color.white); 
    g.fillRect(pathx1.get(p), pathy1.get(p), width, height); 

我可以簡單地給它上色這樣的,但我需要從ComboBox 和我在哪裏丟失了選擇它: )

我會感謝任何幫助或任何可以提高我的工作,如添加其他的東西,這樣的事情感謝~~ :-)

+1

snake1x和snake1y的數據類型是什麼?如果它們是對象,則可能需要考慮使用「equals」方法來比較對象。 ==測試它們是否引用SAME對象。我認爲這可能是問題所在。 – anonymous

+0

他們是隻有座標的整數,然後他們被添加到arraylists - 所以「tron」被創建多數民衆贊成我是如何使軌跡 – user3371957

+0

我仍然認爲你遇到了「自動裝箱」的問題,並將不同的對象與「=」 =「運營商。在不考慮如何填充obstacleX ArrayList以及如何聲明和分配snake1x的情況下,很難爲您準確解答第一個問題。我用測試程序創建了一個答案,向您展示可能令人驚訝的結果。但希望它能幫助你解釋你遇到的問題。 – anonymous

回答

0
import java.util.*; 

public class AutoBoxingTest 
{ 
    public static void main(String[] args) { 
     int i = 1; 
     Integer intObj = 1; 
     ArrayList<Integer> intArray = new ArrayList<>(); 
     intArray.add(new Integer(1)); // Forcefully create a new Integer object 
     intArray.add(1); 

     if(i==intArray.get(0)) 
      System.out.println("Equals"); 
     else 
      System.out.println("Not Equals"); 

     if(intObj==intArray.get(0)) 
      System.out.println("Equals"); 
     else 
      System.out.println("Not Equals"); 

     if(intObj==intArray.get(1)) 
      System.out.println("Equals"); 
     else 
      System.out.println("Not Equals"); 
    } 
} 

當你運行這個程序,你得到的結果

Equals 
Not Equals 
Equals 

注意intArray.get(0)和intArray.get(1)之間的區別。即使它們都是1,它們也是不同的對象。