Ужас какой.... Это отвратительный код, подходящий только для одного случая, когда кнопка сразу на форме.
При этом нарушаются сразу с десяток SOLID принципов
Это странное мнение. В данном случае "композиция" ни как не идёт в противоречие с "наследованием". Здесь обычный сборный контейнер.
Сущность из других сущностей. Нет смысла наследовать человека от компании или наоборот.
Так что тут не именно "композиция", а простая инкапсуляция.
Т.е. персона имеет данные о компании. Объект компании создается внутри класса персоны и доступен для изменения сразу, без инициализации извне.
Стас Поваляев, в методе on_touch_move тебе нужно идти циклом по всем объектам и проверять на коллизии текущий (self) со всеми ними. И киви тут вообще не при чем. Я никогда его не использовал, но и так знаю как он работает. Потому что это базовые знания, применимые ко многим вещам.
Стас Поваляев, трассировка на процессоре выполняется секундами, а ещё более качественная минутами. То что ты там проверял - это простой быстрый рендер. Быстрая трассировка выполняется на видеокартах с поддержкой RTX
Стас Поваляев, ты даже основ не знаешь. Как ты вообще хочешь писать?
Нельзя просто внутри класса разместить исполняемый код. Когда он вызывается будет и кем?
Добавлять его нужно на событие перемещения объекта. Внутрь метода события
Стас Поваляев, и что что картинка - прямоугольник? Вычислять коллизии можно по формуле круга.
Что по твоему делает collide_widget? Магию без затрат процессорного времени? Не смеши. Изучай мат. часть
Стас Поваляев, Delphi в школе не учат, там дают Паскаль.
Делфи далеко не умирающий язык. А питон не пригоден к прикладному софту, к софту с ГУИ, к софту с хорошей производительностью.
Если что, то Питон старее Делфи. 1991 год против 1995 года. Да, Делфи появился в 1995 году, позже питона на 4 года.
Ужас какой.... Это отвратительный код, подходящий только для одного случая, когда кнопка сразу на форме.
При этом нарушаются сразу с десяток SOLID принципов