2014-03-02 6 views
0

Я пытаюсь сделать свой школьный проект «Трон». Я новичок, когда дело доходит до программирования ... Я делал некоторые столкновения с arraylist, и они работают отлично. Но я не могу сделать коллизионную змею с другим объектом ... Я использую это: snake1x и snake1y - координаты первой змеи и препятствия X является arraylist, который содержит координаты другого объекта.Java tron ​​Collision, Combobox

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

У меня есть объект уже обращается в моей игре, но змея просто передать Повсеместно это ... :( странно то, что я сделал это с методом на похожем столкновении между змеями и работает отлично :)

Моей вторая проблема с выпадающим списком и выбрать цвет для змеи ..

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); 

Я мог бы просто дать ему цвет, как это, но мне нужно, чтобы выбрать его из выпадающего списка и что там, где я теряюсь:)

Я буду признателен за любую помощь или что-нибудь, что может улучшить свою работу, как добавить другие вещи, и что-то подобное спасибо ~~ :-)

+1

Каков тип данных snake1x и snake1y? Если они являются объектами, вы можете захотеть использовать метод «equals» для сравнения объектов. == проверяет, ссылаются ли они на объект SAME. Я думаю, что это может быть проблемой. – anonymous

+0

они целые числа, содержащие только координаты, а затем они добавляются в arraylists - и поэтому создается «tron», как я делаю трейл – user3371957

+0

Я все еще думаю, что вы испытываете проблему «автобоксинга» и сравниваете разные объекты с «= = ". Не смотря на то, как заполняется препятствие X ArrayList и как объявляется и назначается змея1x, трудно получить точный ответ для решения первой проблемы. Я создал ответ с тестовой программой, чтобы показать вам результат, который может быть неожиданным. Но, надеюсь, это поможет вам объяснить проблему, с которой вы столкнулись. – 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, это разные объекты.