Домашнее задание 2 к уроку 25

SFML и C++ Уроки \ Разработка игр Форумы Домашние задания Домашнее задание 2 к уроку 25

В этой теме 2 ответа, 2 участника, последнее обновление  Alaz777 10 мес., 1 неделя назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #2830
    +1

    Alaz777
    Участник
    Сообщений:19

    Зарегистрирован:
    19.01.2016

    Репутация:15

    Предлагаю своё решение задания 2 (при виде поблизости игрока (ну скажем в пределах 400 координат) враг должен резко ускориться в его сторону и постараться задавить игрока, при этом над головой врага должно появиться диалоговое облачко (как в комиксах) с надписью  “ААААААH!!!” или типа того).

    Для начала, я добавил в int main шрифт и диалоговое облачко:

    Затем, я прописал ещё 2 логические переменные в классе Entity:

    И инициализировал их в конструкторе:

    Также, в int main нужно добавить таймер, благодаря которому диалоговое облачко будет исчезать через пару секунд после своего появления:

    Затем, в цикл for (там где мы прописывали столкновения игрока с врагом в 25-м уроке и под тем местом где было прописано взаимодействие врагов в 26-м уроке) добавил несколько строк, и этот цикл стал выглядеть вот так:

    Теперь, в классе врага (в самом конце функции update) надо написать:

    Это нужно для того, чтобы отразить один раз врага в сторону игрока, если враг в этот момент смотрит в другую сторону.

    Ну и в конце концов надо рисовать текст и облачко, когда надо. Там, где всё рисуем добавляем:

    Вроде ничего не забыл. Теперь, когда игрок находиться на расстоянии 400 координат от врага и, при том расположен не выше него, враг поворачивается в сторону игрока и начинает ехать в его сторону с криками “Задавлю!”,  до тех пор пока игрок не уйдёт с его пути. Можно ещё добавить условие, чтобы игрок был не слишком ниже врага, а на его уровне, но я не стал этого делать.

    Картинка с диалоговым облачком и шрифт вложены в тему. Шрифт я взял из урока 13.

     

    П.С. Код получился довольно большим, особенно для текста с облачком, поэтому очень хотелось бы увидеть ещё варианты. Возможно есть более короткое решение.

     

     

    Вложения:
    You must be logged in to view attached files.
    #2832
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:584

    Зарегистрирован:
    04.01.2015

    Репутация:103

    отлично) ещё бы скрин работы увидеть)) вместо таймера можно было и на координаты сравнить “если приблизился на n , то убрать надпись”, но это уже как хочется. чтобы кода было поменьше лучше создать класс для этого, в нем будет метод update который в зависимости от условия запустит текст и нарисует его, прям там же и рисование можно прописать (как в уроке с lifebar’ ом).

    #2837

    Alaz777
    Участник
    Сообщений:19

    Зарегистрирован:
    19.01.2016

    Репутация:15

    Я бы добавил скрин, но к сожалению у меня на компе не работает скриншот.((

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

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.