0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 29
|
|
1 | |
По щелчку мыши добавить один объект к другому27.09.2019, 17:47. Показов 1718. Ответов 7
Метки нет (Все метки)
Есть вот такая штука, написанная на Флаше : http://igroflot.ru/shot/flash_game_50/
Требуется сделать что-то подобное при помощи С++ и SFML (имею Code Blocks с библиотеками SFML). Никакой руки с пистолетом не нужно. Т.е. требуется щелчком мыши по одному объекту (мишень) в локальные координаты курсора на мишени помещать другой объект (изображение пробоины) и в зависимости от этих локальных координат на мишени возвращать какое-то количество очков. Т.е. объект пробоина становится дочкой объекта мишень. Во Флаше это достигается просто при помощи события onPress(), вызываемого щелчком левой кнопки мыши по какому-то объекту на экране. А мишень набирается из концентрический кругов, каждый из которых является объектом с аттрибутом количества очков. Во Флаше, если onPress() зарегистрирован на нескольких объектах, расположенных друг на друге, то откликается только верхний объект. Перелопатил много учебных роликов С++ & SFML, но ничего подобного не нашел. Это можно подобным образом воспроизвести на С++ & SFML, или требуется другой подход?
0
|
27.09.2019, 17:47 | |
Ответы с готовыми решениями:
7
Добавить текст на Image по щелчку мыши По щелчку левой кнопки мыши должен меняться цвет формы, а по щелчку правой кнопки мыши – восстанавливаться предыдущий Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту? выделить место для объекта с помощью new или создать указатель, объект и присвоить один другому. какая разница? |
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
|
||||||
27.09.2019, 22:23 | 2 | |||||
Координаты мыши можно отлавливать так
0
|
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 29
|
|
28.09.2019, 13:51 [ТС] | 3 |
Спасибо. Это получилось и пробоина нарисовалась, где надо. Однако, если мишень движется, то пробоина остается висеть на месте.
Судя по комменту // get global mouse position возможно добраться до локальной позиции курсора в координатах мишени. Как это сделать? И как сделать пробоину дочкой мишени, чтобы она двигвлвсь и масштабировалась вместе с мишенью?
0
|
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
|
|
04.10.2019, 18:59 | 4 |
добавить в класс пробоины поле parents и присвоить этому полю значение мишени и пересчитывать положение пробоины на основании данных мишени
0
|
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 29
|
|
04.10.2019, 19:29 [ТС] | 5 |
Спасибо.
Если я правильно представляю то, что мне нужно, экземпляр пробоины должен создаваться при обработке sf::Mouse::isButtonPressed(sf::Mouse::Left)). Мишеней несколько и они двигаются. А количество выстрелов неограничено. В этом случае нужно сначала определить, если курсор попал по какой-то из мишеней, извлечь из этой мишени ее значение и присвоить его полю parents? Если так, то есть какой-то более эффективный способ определять, щелкнул ли курсов по мишени, чем определять координаты мишени в момент щелчка и решать, находится ли курсов внутри габаритов мишени? Нельзя ли в классе Мишень определить метод, который при щелчке по ней добавляет к ней child? Или сформулировав проще, как сделать объект Мишень кликабельным? Например, чтобы по щелчку по нему он исчезал
0
|
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
|
||||||
04.10.2019, 23:56 | 6 | |||||
что-то такое
0
|
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 29
|
|
05.10.2019, 16:38 [ТС] | 8 |
Спасибо, ТабуретY, за готовое решение и за Ваше время.
Работает точно как я хотел. Теперь буду разбираться, как Вы это сделали
0
|
05.10.2019, 16:38 | |
05.10.2019, 16:38 | |
Помогаю со студенческими работами здесь
8
Модифицировать разработанное приложение: добавить еще один «летательный» объект Линия по щелчку мыши Заливка по щелчку мыши Пункт меню по щелчку мыши Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |