8 / 8 / 1
Регистрация: 13.07.2014
Сообщений: 352
1

Rect.collidepoint недоволен как ворчливая бабка!

11.08.2018, 16:45. Показов 1205. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую! Особенно Табурету!
Не буду вдаваться в подробности для лаконичности.

В 2 словах - нужен двумерный массив из Rect (pygame), для того чтоб потом пробегаться по нему и проверять каждый Rect не нажата ли кнопка мыши в его области.

Я новичок. И массив ДВУмерный сделал так:


Python
1
  Array_Rect = [[pygame.Rect for i in range(field_size)] for j in range(field_size)]
# = field_size - размер, он у меня квадратный. 5 на 5 или 7 на 7 и т.д.


Далее я заполняю вот так:
Python
1
2
3
4
5
    for i in range(0, field_size - 1):
        for j in range (0, field_size - 1):
            TMP_Rect = pygame.Rect(step_A, step_B, 100, 100)
            step_A += step
            Array_Rect[i][j] = TMP_Rect
На этом шаге проверяю print-ом пробуя выводить разные элементы массива и выводятся как нужно - Rect-ы.

Далее...

Python
1
2
3
4
   for i in range (field_size):
       for j in range(field_size):
            if Array_Rect[i][j].collidepoint(pos):
                Нужные действия делаю
И вот тут проблема!

"TypeError: descriptor 'collidepoint' requires a 'pygame.Rect' object but received a 'tuple'"

Не понимаю почему, я же вызываю функцию collidepoint для конкретного Rect-а. Так как Array_Rect[i][j]

Добавлено через 1 час 11 минут
Сделал так и вроде работает...
Python
1
2
3
4
5
  for i in range(field_size):
        for j in range (field_size):
            TMP_Rect = pygame.Rect(step_A, step_B, 100, 100)
            step_A += step
            Array_Rect[i][j] = TMP_Rect
Не знаю в чём тут фишка. Но тема пусть будет, мало ли ещё что произойдёт =(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2018, 16:45
Ответы с готовыми решениями:

Как регулировать работу вертикального scroll rect и горизонтального scroll rect
У меня есть 7 вертикальных "Scroll Rect" ( 7 дней недели, 1 вертикальный Scroll rect -1 день ), в...

Изменение текста в rect из окна приложения и перетаскивание rect
Добрый день. Нарисовал в коде определенное количество прямоугольников(rect) и загружаю их как...

Закрасить rect поверх уже закрашенного rect
Добрый день! Столкнулся с тем, что мне нужно поверх закрашенного прямоугольника закрасить еще один,...

Как определить идентификатор в c++. Rect- индификатор не определен. Не могу понять как исправить
#pragma once #include"Ship.h" #define DECK 176//исправная клетка #define DAMAGE 'X' #define...

Svg - как включить текст к rect, circle и т.п.?
Затеял тут сделать простой редактор схем процессов. И подумал, чтобы линии в месте пересечения...

0
11.08.2018, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2018, 16:45
Помогаю со студенческими работами здесь

Как конвертировать локальный RectTransform.rect в корневой?
Здравствуйте, по умолчанию RectTransform.rect возвращает локальный Rect по отношению к родителю. А...

Как у Rect Transform менять через скрипт Left и Right?
Как у Rect Transform менять через скрипт Left и Right?

Rect Transform - как точно указать Pos X через скрипт ?
Всем привет! Подскажите как точно указать в Rect Transform позицию Pos X через скрипт? ...

Как узнать Rect рабочего стола без панели задач?
Что-то вроде Screen.WorkAreaRect, только со всеми мониторами, а не только активным (как это делает...

Как присвоить объекту высоту полученную из sprite.rect.height
Всем здравия получаю спрайты и присваиваю объекту с RectTransform ...

Как сделать обновление открытых окон после изменения Rect WorkArea
Как сделать обновление открытых окон после изменения Rect WorkArea После установки новых...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru