23:25 Урок 8 Оптимизация команд при захвате объкта мышкой. |
Урок 8 Захват и отскок без методов pygame collidelist() В предыдущем уроке мы рассматривали варианты захвата объектов мышкой и столкновения объектов. Варианты кодов были построены на встроенных методах библиотеки pygame -collidelist(). А именно, мы использовали специальный контейнер (grupe) для проверки взаимодействия спрайтов, но как показала практика способ прост и имеет несколько недостатков. Главный недостаток - лаг при столкновении движущихся объектов, они периодически "проникают" друг в друга не выполняя условие отскока. Поэтому сегодня рассматриваем коды ручной прописки захвата объекта и столкновений. 1. Вводим наши объекты через класс и получаем все необходимые параметры для дальнейшей работы с ними: а) прямоугольные координаты, ширину и высоту объекта б) скорость и условие движения
Теперь вводим наши объекты как экземпляры класса с заданными нач. координатами, именем и скоростями по х и у координатам. Присваиваем списку [b] наши объекты и в основном цикле работаем с ними через этот список. При нажатии ЛКМ и попадании в движущийся объект мы его останавливаем, а при нажатии СКМ мы разрешаем движение всем остановленным объектам. О отображаем наши объекты.
И так, мы получили движущиеся объекты с возможностью их остановки и запуска заново. Усложним код задав столкновения и перемещения объектов мышкой. Кстати, данная задача решается студентами четвертого курса факультетов программирования универов России. Сейчас мы убедимся , что ничего сложного в этом нет. В наш класс спрайтов добавим функцию столкновения : где w1 , w2 -ширины и h1,h2-высоты объектов. следующая функция изменения направления движения при столкновении: |
|
Всего комментариев: 0 | |