Главная » 2016 » Март » 18 » Урок 8 Оптимизация команд при захвате объкта мышкой.
23:25
Урок 8 Оптимизация команд при захвате объкта мышкой.

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

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

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

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

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

 

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

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

отображаем наши объекты.

 

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

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

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

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

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

Программирование игр на Python

Django - создание сайтов с нуля

Javascript - просто используем готовые решения