public boolean checkCollision(GameObject gameObject){
boolean rezult = false;
if (snakeParts.contains(gameObject)) rezult = true;
return rezult;
}
snakeParts - arrayList<Game Object>
gameObject ( int x , int y)
Fors Major
30 уровень
Есть сомнение что (валидатор тоже так считает) что я правильно понимаю как работает .contains у arrayList.
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Fors Major
1 апреля 2020, 18:06
.equals поэлементно тоже не пройдет без переопределения?
0
Ksenia Volkova Java Developer в DXC Master
1 апреля 2020, 18:18
"equals поэлементно" - это как раз примерно то, что и делает contains()
Но equals без переопределения будет сравнивать ссылки - то есть вернет true только если сравнивать объект с самим собой.
0
Fors Major
1 апреля 2020, 18:22
я понял , equals это частный случай contains. Contains перебирает список при помощи equals, если перопределить equals, то и contains отработает как задумывается. Верно?
0
Ksenia Volkova Java Developer в DXC Master
1 апреля 2020, 18:04решение
Метод contains() зависит от метода equals().
Надо либо переопределить его так, чтобы объекты с одинаковыми координатами x и y считались равными, либо в самом checkCollision() проверять не через contains(), а через сравнение координат.
+2