2014-11-16 4 views
1

Итак, мы должны закодировать игру Biljard i java, которая является основной целью проекта. Однако проект разделен на три этапа. Сначала нам дали «раковину» для стола и два шара. Когда вы имитируете, он рисует стол без «дыр», и шары не сталкиваются друг с другом и не сталкиваются со стенами. Первое упражнение состояло в том, чтобы заставить их столкнуться.Как удалить окрашенный объект, если он соответствует определенным критериям

Однако теперь мы должны продолжить сборку в «игру болезни», где трение стола равно нулю и определенное количество мячей имитируется как здоровое или загрязненное. Чтобы текст оставался коротким, главная проблема - «удалить» шары, которые умерли. Поэтому, когда вы запускаете проект, появляется 30 шаров в случайных положениях и скоростях. Учитывая некоторую вероятность, что некоторые шарики загрязнены и будут загрязнять другие шары во время столкновения с заданной вероятностью. Затем начинается таймер, и они могут либо умереть, либо восстановить. Однако, когда они умирают, шары должны исчезнуть. И я не могу этого сделать. Теперь я изменил цвет на черный.

Как остановить компонент краски для шара, который «убит»? Я хочу, чтобы они просто исчезли со стола ...

ответ

0

Вы пытались установить мяч в нуль?

Если предположить, что у вас есть класс Болл который конкретизируется как

Ball b = new Ball(someArguments); 

затем вы рисуете шар б в методе краски.

Если затем в какой-то момент установить

b = null; 

сборщик мусора должен удалить объект и вывести его из памяти, и метод краска должна прекратить рисовать его.

Приветствия,

Лаки

+0

Дело это краска компонент, рисовать шары в в классе таблицы. Там у меня есть forloop, который меняет от 1 до num_balls, который в настоящее время установлен на 30. У меня есть метод killAndRemove, который в настоящий момент перекраивает все мертвые шары в черный, но вместо черного я хочу просто удалить шары, которые имеют статус «мертвый» ». Поэтому я не могу поставить ни одного шарика в нуль. Я прав? @Dat Luckey –

+0

Я предполагаю, что каждый шар имеет логическое значение isAlive. Если для этого параметра bool установлено значение false, ваш метод killAndRemove может удалить его из массива, в котором он хранится. Когда for-loop выполняет итерацию через этот массив, он больше не будет рисовать мяч. Его не так легко сказать, так как я не знаю вашего кода. Однажды я создал видеоигр (2-й стрелок), где все враги, где хранились внутри массива ArrayList, который был повторен внутри метода draw(). Когда враг умер, мне просто пришлось удалить его из этого списка, и он исчез с экрана. Однако, установив объект в null, убедитесь, что он удален из ОЗУ. Cheers –

+0

О, я забыл сказать: в моей видеоигре каждый противник переписал метод рисования, поэтому, когда он был удален, он не мог рисовать сам, Я не знаю, как вам это удалось. Я даю вам рекомендацию переписать метод paint() внутри класса шара. В методе «MAIN-Paint» вы делаете ball [i] .draw(). Надеюсь, это может как-то помочь вам. –

Смежные вопросы

 Смежные вопросы