Главная » 2015 » Июль » 3 » Урок 8 Оптимизация команд при захвате объкта мышкой.
00:54
Урок 8 Оптимизация команд при захвате объкта мышкой.

Урок 8        Захват и отскок без методов pygame    collidelist()

В предыдущем уроке мы рассматривали варианты захвата объектов мышкой и столкновения объектов. Варианты кодов были построены на встроенных методах библиотеки pygame -collidelist(). А именно, мы использовали специальный контейнер (grupe) для проверки взаимодействия спрайтов, но как показала практика способ прост и имеет несколько недостатков. Главный недостаток - лаг при столкновении движущихся объектов, они периодически "проникают" друг в друга не выполняя условие отскока. Поэтому сегодня рассматриваем коды ручной прописки захвата объекта и столкновений.

1. Вводим наши объекты через класс и получаем все необходимые параметры для дальнейшей работы с ними:

а) прямоугольные координаты, ширину и высоту объекта

б) скорость и  условие движения

В классе задаём физику движения и отображения объектов

Теперь вводим наши объекты как экземпляры класса с заданными нач. координатами, именем и скоростями по х и у координатам.

Присваиваем списку [b] наши объекты и в основном цикле работаем с ними через этот список. При нажатии ЛКМ и попадании в движущийся объект мы его останавливаем, а при нажатии СКМ мы разрешаем движение всем остановленным объектам. Отображаем наши объекты.

 

 

 

И так, мы получили движущиеся объекты с возможностью их остановки и запуска заново. Усложним код задав столкновения и перемещения объектов мышкой. Кстати, данная задача решается студентами четвертого курса факультетов программирования универов России. Сейчас мы убедимся , что ничего сложного в этом нет. В наш класс спрайтов добавим функцию столкновения :

где w1 , w2 -ширины и

h1,h2-высоты объектов.

следующая функция изменения направления движения при столкновении:

И функция передачи координат мышки объекту при клике на нем:

Теперь рассмотрим как вызываются эти функции из основного цикла.

Если функция столкновения верна для элементов списка объектов выполняем функцию изменения направления движения.

Следующее действие-

При попадании курсором мышки на объект мы его останавливаем и перемещаем

 

 

Просмотров: 452 | Добавил: kuzma | Рейтинг: 0.0/0
Всего комментариев: 0
avatar

Сайт создан для помощи тем, кто делает первые шаги в программировании.

- автор идеи Кузьма Кузин

Возможность бесплатного доступа ко всем материалам и скриптам.

-совместная работа с группой молодых программистов

Срипты для автоматического заработка на SEO сайтах.

- для всех пользователей всё по цене в 1 EUR