Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61

Проверка id при столкновении

07.04.2020, 21:28. Показов 3041. Ответов 6

Студворк — интернет-сервис помощи студентам
Здрасте, помогите пожалуйста в следующем вопросе . Я создал класс спрайта в котором есть параметр id. После группу спрайтов (группа в будущем нужна для обнаружения столкновений)и с помощью этой группы добавил на экран 2 иконки. Вопрос в следующем можно ли как то при наведении мышки на иконку определить какой у нее id? Если да то как?
Вложения
Тип файла: zip test2.zip (12.9 Кб, 4 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2020, 21:28
Ответы с готовыми решениями:

Как остановить два круга при их столкновении?
Прошу помочь с написанием кода на Python используя модуль tkinter. Вот собственно задание: Продемонстрировать движение двух кругов...

Проигрыш при столкновении
Подскажите пожалуйста,как написать код,чтобы при столкновении объекта shar с объектом Plane выходил объект Panel Lost(я хочу сделать чтобы...

Prefab инициализация при столкновении
Добрый день! Подскажите плиз. У меня есть префаб. Я его инициализирую. ПРи коллизии мне нужно чтобы находился gameobject (canvas) и...

6
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
08.04.2020, 13:33
Так примерно

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import pygame
import random
 
from sprites import Mouse
 
 
        
class Button(pygame.sprite.Sprite):
    def __init__(self, id, position):
        pygame.sprite.Sprite.__init__(self)
        self.id = id
        self.image = pygame.image.load('textures/heroes_1.png')
        self.rect = self.image.get_rect()
        self.rect.topleft = position
 
    def mouse_over(self, mouse):
        if self.rect.collidepoint(mouse):
            print(self.id)
 
 
pygame.init()
 
pygame.display.set_caption("тест")
icon_game = pygame.image.load("textures/icon_game.png")
pygame.display.set_icon(icon_game)
screen = pygame.display.set_mode((1024, 768))
clock = pygame.time.Clock()
mouse = Mouse((0, 0))
 
x = random.randint(0, 9)
 
 
 
heroes = pygame.sprite.Group()
heroes.add(Button(0, (0, 0)), Button(1, (100, 0)), )
 
running = True
while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.MOUSEMOTION :
                for hero in heroes: 
                    hero.mouse_over(event.pos)
 
        # if pygame.sprite.spritecollide(mouse, heroes, False):
        #     print(heroes)
 
        screen.fill((0, 0, 0))
 
 
       #получение координат мыши 
        mouse_pos = pygame.mouse.get_pos()
        mouse.rect.x = mouse_pos[0]
        mouse.rect.y = mouse_pos[1]
 
        heroes.draw(screen)
 
        #прорисовка моего курсора и скрытие стандартного
        screen.blit(mouse.image, mouse_pos)
        pygame.mouse.set_visible(0)
 
        pygame.display.flip()              
        clock.tick(60)
 
#      print(clock)
 
 
pygame.quit ()
1
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61
08.04.2020, 19:41  [ТС]
Благодарю
0
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61
12.04.2020, 10:19  [ТС]
Я дико извиняюсь, но мне снова нужна помощь думал с вашим примером мне удастся реализовать свои задумки, как оказалось мозгов не хватило, я в самом коде оставил комментарии в чем конкретно проблема, потому что если я напишу все то что написал там меня забанят
Вложения
Тип файла: zip test2.zip (13.8 Кб, 3 просмотров)
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
12.04.2020, 22:11
Лучший ответ Сообщение было отмечено Kxarog как решение

Решение

Можно добавить в Button еще одно поле

Python
1
2
3
4
5
6
   self.selected = False
 
    def mouse_over(self, mouse):
        self.selected = False
        if self.rect.collidepoint(mouse):
            self.selected = True
и проверять в главном цикле

Python
1
2
3
for hero in heroes: 
            if hero.selected:
                print(hero.id)
1
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61
12.04.2020, 22:53  [ТС]
спасибо, только у меня 1 вопрос для удовлетворения любопытства зачем прописывать self.selected = False дважды?
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
12.04.2020, 23:01
Цитата Сообщение от Kxarog Посмотреть сообщение
self.selected = False дважды
Первый раз это в __init__ запись, начальное значение
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2020, 23:01
Помогаю со студенческими работами здесь

Звук при столкновении объектов
Как реализовать воспроизведение звука в скрипте при столкновении двух объектов (Player и Tp)? Игра 3d Для обработки столкновения я...

Удаление при столкновении объектов
ребят как сделать так что бы при столкновении двух шаров они удалялись ? например нажал на кнопку и два шара поехали друг к другу и при...

Звук при столкновении объектов
Дорогие форумчане! Как реализовать воспроизведение звука в скрипте при столкновении двух объектов (bird_0 и finish)? Игра 2d Для...

Удалить объекты при их столкновении
Добрый день,нужна помощь, нужно изменить программу. Условие задачи:В окне перемещаются объекты, отталкиваясь от стенок окна. В окне...

Проблемы при столкновении объектов в 2д
У меня есть триггер, и много объектов из префаба, при столкновении с триггером объекты должны удаляться, но этого не происходит, подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru