|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
|||||||||||
Как сделать чтобы при проверки условия вызывался метод максимум один раз?25.08.2018, 14:56. Показов 4756. Ответов 13
Метки нет (Все метки)
Делаю небольшую игру. Хочу сделать так чтобы при столкновении объектов у игрока снимались жизни?
0
|
|||||||||||
| 25.08.2018, 14:56 | |
|
Ответы с готовыми решениями:
13
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? Превратить программу так, чтобы метод Func вызывался n раз |
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
| 25.08.2018, 15:01 | |
|
вместо && использовать ||
шаблон по твоему примеру: ( условие ) || ( условие ) || ( условие )
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
|
| 25.08.2018, 15:44 [ТС] | |
|
Не помогло теперь постоянно жизни списываются.
0
|
|
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
| 25.08.2018, 15:52 | |
Сообщение было отмечено VladJava как решение
Решение
Похоже я понял вопрос.
Раннее, я думал нужно, чтобы 1 раз в скобках условие выполнилось, и тогда делать то, что в скобках { } Посмотрев на условие, тут же вопрос. Если вы учитываетe радиус от врага, то почему не учитываете радиус от игрока? Из-за этого, и снимаются жизни только при пересечении на половину. Но это одно, а чтобы один раз жизнь списывалась, необходимо сделать триггер Например, один раз урон был от столкновения? то trigger = true тогда в условие, добавьте пожалуйста эту запись: ... && !trigger) {... но, если условие не проходит, то иначе: trigger = false; теперь, я думаю у вас получится реализовать столкновение. Можно было бы сделать так, чтобы игрок мигал (например 3 секунды), а потом, если он опять столкнулся с врагом - опять урон. ДЛя этого используйте таймер, и по истечению таймера: trigger = false;
1
|
|
|
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
|
|
| 25.08.2018, 15:54 | |
|
VladJava, Думается мне, у тебя не все ок с ооп.
Сделай класс PointLocation где будешь хранить координаты. В нем же, переопредели метод public boolean equals(). Для player и enemy дай по одному объекту PointLocation. После каждого движения игрока или врагов, вызываешь equals().
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
||||||
| 25.08.2018, 16:43 [ТС] | ||||||
|
sdasdaw, Сделал как вы скзали. Объявил boolean trigger = false, а также прописал:
Потому что trigger нужно вернуть в состояние false. Теперь нужно будеть разобраться с таймером. Кстати можно ещё сделать так чтобы при сталкивании enemy исчезал. И тогда точно всё будет работать как надо.
0
|
||||||
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
| 25.08.2018, 16:47 | |
|
В условии, добавьте просто else trigger = false;
можно, как вы рисуете врага / компонент?
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
||||||||||||||||
| 25.08.2018, 18:03 [ТС] | ||||||||||||||||
|
sdasdaw, Я недавно сделал так чтобы объект сам себя перерисовывал. То есть добавил метод paint в класс Enemy.
0
|
||||||||||||||||
|
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
|
|
| 25.08.2018, 18:08 | |
|
тема то отсюда https://www.cyberforum.ru/java-gui/
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
||||||
| 25.08.2018, 18:17 [ТС] | ||||||
|
sdasdaw, Да. Я разобрался. Я добавил ещё одно условие.
Большое спасибо, что рассказал о такое классной вещи, как trigger;
0
|
||||||
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
| 25.08.2018, 18:19 | |
|
перед, нужно скорее всего убедится, что изображение имеет альфа канал, но это не точно.
Проверяйте это: g.setComposite(AlphaComposite.getInstanc e(AlphaComposite.SRC_OVER, 0.5)); Добавлено через 1 минуту VladJava, зачем еще одно условие... просто else добавить к существующему условию
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
|
| 25.08.2018, 18:25 [ТС] | |
|
sdasdaw, Я уже пробовал.
Если добавить else к условию, то trigger в нём поменяется на false. И тогда первое условие будет опять true. Так как там идет проверка && !trigger.
0
|
|
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
| 25.08.2018, 18:29 | |
Сообщение было отмечено VladJava как решение
Решение
тогда поменяйте условие
создайте условие в условии и переместите туда проверку trigger if ( ... ) { if (!trigger) { // ... } } else { false }
1
|
|
|
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
|
|
| 25.08.2018, 19:27 [ТС] | |
|
sdasdaw, Спасибо!
0
|
|
| 25.08.2018, 19:27 | |
|
Помогаю со студенческими работами здесь
14
При выборке одна и та же строка выводится несколько раз. Как сделать чтобы один? Как сделать, чтобы при нажатии на кнопку Messagebox открывался только один раз? Как сделать, чтобы при запуске проги с параметрами, вызывался пункт меню соответствующий введенному параметру? Как сделать чтобы анимация запускалась каждый раз после нажатия на кнопку, а не один раз? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|