Урок 26 SFML c++,взаимодействие врагов(объектов списка) между собой

Теперь давайте посмотрим как же взаимодействовать врагам между собой. (например не дадим им сталкиваться и наезжать друг на друга). Вернее будет сказать – цель этого sfml урока рассмотреть взаимодействие между элементами списка на примере врагов.

Видеоверсия http://www.youtube.com/watch?v=5AV1h0fFXyY

Объявим еще один итератор до цикла “пока открыто окно”:

 

Теперь в месте прохода по эл-там списка (внутри) пишем (это прям перед концом } цикла for который пробегается по эл-там списка, то есть всё же внутри этого цикла, если что весь код в конце урока):

 

Здесь пробегаемся заново по элементам списка и проверяем на совпадение прямоугольников (чтобы не взаимодействовать самому с собой) между другими элементами списка. Как бы первый элемент списка сравниваем с остальными на прямоугольники (и потом на пересечение), потом второй и так далее до последнего.

При столкновении этих элементов даем им обратное направление движения и инвертируем (отражаем) их спрайт по горизонтали.

Старайтесь как можно меньше проходиться по списку, это повышает сложность вашей программы и она больше жрёт. Подумайте – можно ли сократить проход по списку в этом уроке и если да, то как это сделать.

Домашнее задание к уроку 26 sfml: http://www.youtube.com/watch?v=Pre2Sh38-oA

задание 1:
реализовать убийство врага только лишь в случае попадания игроком сверху в область головы (вам нужен достаточно широкий спрайт врага, примерно как в уроке). если игрок не попал по голове – он получает повреждения.

задание 2:
при столкновении одного врага с другим (и при этом если игрок находится с ними на приблизительно одной высоте) – оба врага должны ехать в сторону игрока. ну как бы сообщая своему другу, что пища (игрок) в той стороне. Когда игрок и враги получают достаточную разницу в высоте (прыжка не достаточно, нужно забраться чуть выше прыжка , на стенку например, тогда враги теряют цель и живут как раньше) – враги должны вернуться к своим привычным будням и просто действовать как раньше – тупо катаясь от стенки до стенки и стукаясь лбами друг о друга.

На следующем sfml уроке рассмотрим работу с двигающейся платформой.

main.cpp урока:

 

 

Буду благодарен, если поделитесь:
SFML вопросы, прошу, задавайте на форуме.

Добавить комментарий