Арканоид(19)

  • 12
  • Недоступна
Осталось совсем чуть-чуть. В классе Arkanoid создай поле приватное isGameOver типа boolean. Реализуй метод checkBricksBump. В этом методе надо проверить - не столкнулся ли шарик с каким-нибудь из "кирпичей". Для проверки столкновения используй метод isIntersec. Если шарик все-таки попал в кирпич,
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (64)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Мухамед25 уровень
вчера, 19:25
Упустил момент): "кирпич умирает - надо удалить его из списка всех кирпичей.". Со 2-й попытки получилось
Alexander Sedov25 уровень, Москва
вторник, 12:03
angel и angle не тоже самое)))))))))
Володимир Штаба28 уровень, Киев
24 октября, 23:03
У меня первый методс с foreach не проканал используйте класcический for
Александр Моцар26 уровень, Минск
5 ноября, 21:55
такая же ерунда была.
Rihard198533 уровень
5 августа, 13:14
Такие разжеванные задачи когда решать не можешь обидно(
9 августа, 00:44
Это задел на будущее, тут потренировался на кошках, если хочешь по взрослому, присмотрись к libGdx (если речь идёт и java и 2d играх) и попробуй там реализовать то что сделал тут для консоли.
Сергей36 уровень, Москва
28 июня, 09:48
не забываем методы сделать паблик, без модификатора void checkBricksBump() void checkStandBump() не пропустил
Rodriguez32 уровень
28 июля, 21:46
Хм, а ведь в условии нигде не сказано об этом.
9 августа, 00:46
Ещё в первой большой задачи было озвучено, если в условиях к задачи не говорится конкретно какой модификатор использовать, то подефолту подразумевается public
Иван Мастеров28 уровень
24 июня, 09:41
Странно, но у меня валидатор не пропускал из-за того, что в условиях писал brick.isIntersec(ball) и stand.isIntersec(ball). Изменив на ball.isIntersec(brick) и ball.isIntersec(stand) все прошло. Странно, потому что формула, используемая в методе isIntersec симметрична относительно объектов, между которыми рассчитываем расстояние.
Сергей36 уровень, Москва
28 июня, 09:53
ну может тут логика должна быть железная, робот - ведь железный)) шар столкнулся с кирпичом, а не кирпич столкнулся с шаром
Иван Мастеров28 уровень
29 июня, 19:06
Видимо, с физикой туговато у Вас было =)
Артем28 уровень, Минск
5 июля, 14:29
Я тоже столкнулся с этой проблемой. Видимо, валидатор требует выполнение проверки дословно "не ударился ли шарик о подставку." " не столкнулся ли шарик с каким-нибудь из "кирпичей"." Именно перечитав условие, решил изменить и прокатило. Это по сути перемена мест слагаемых и сумма от этого не изменится, но математические аксиомы - ничто для валика)
Ярослав Воробець29 уровень, Львов
9 июня, 22:55
1.Всім 3 методам присвоїв public - 10 спроб на то пішло))). 2.Валідатор прийняв з for(int i...) в першому методі.
Леонид Шевченко30 уровень, Санкт-Петербург
6 марта, 10:23
Вот странног все получилось. Сделал метод checkBricksBump через for(Brick b : bricks)... валик не пустил. поменял на обычный for (int i = bricks.size(); ...) - проверку прошел. И уже в след задании поменял код на первый вариант. Что за беспредел
Sergey Simonov35 уровень, Санкт-Петербург
18 апреля, 17:06
полезно знать как сделать удаление из списка элемента во время чтения с помощью применения явного итератора, ибо сами подумайте как foreach поймет как смотреть дальше список если в нем с чего то вдруг теперь не хватает элементов - сие может закончиться очень плачевно https://stackoverflow.com/questions/17279519/removing-items-from-a-list?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
Максим24 уровень
22 апреля, 11:59
Я делал через итератор, надежный способ
Muza Meduza26 уровень, Киев
20 января, 17:19
В методе checkBricksBump() цикл по объектам не принимал, по индексу принял.
Аслан30 уровень, Москва
14 декабря 2017, 01:34
Валидацию проходит:
public void checkBricksBump(){
    if(bricks.stream().anyMatch(ball::isIntersec)) {
        double angle = Math.random() * 360;
        ball.setDirection(angle);
        //ball.setDirection(new Random().nextInt(360));// так не проходит валидацию
        bricks.remove(bricks.stream().filter(ball::isIntersec).findFirst().get());
    }
}
public void checkStandBump(){
    if(ball.isIntersec(stand)){
        double angle = 90 + 20 * (Math.random() - 0.5);
        ball.setDirection(angle);
        //ball.setDirection(new Random().ints(1,80,100).findAny().getAsInt());
    }
}
boolean Stream.anyMatch(Predicate<? super Brick> predicate) возвращает true если хоть для одного элемента стрима предикат дает true.
RMuskovets30 уровень, Львов
22 апреля, 16:54
нетушки
9 августа, 00:49
Не юзайте для задач из javarush фичи java 1.8, валидатор их не примет.