Урок 2. Создаём игровую карту мира. Часть 1.

Доброго времени суток!

Продолжаем делать пошаговую стратегию. В этом уроке мы добавим в нашу игру игровую карту, через которую будет игрок взаимодействовать с программой. Карты будет делиться на три класса: интерфейс, через который пользователь будет взаимодействовать с картой; камера или вид игрока, который будет направлен на определённый участок карты, и который будет рисоваться в интерфейсе; ну и собственно сама карта, в которой всё будет храниться. Первое, что мы реализуем – это интерфейс. Создаем новый файл TMapWidget.hpp и добавляем его к проекту. Наш интерфейс должен хранить координаты расположения в окне. Также добавим на время поле текстуры, чтобы загрузить её один раз во время создания объекта данного класса.

Помним, что всё содержимое .hpp файлов должно прятаться в рамки:

– иначе можно получить море проблем с множественным подключением.
Теперь перейдём к методам класса: конструктор, деструктор и отрисовка.

Создадим новый файл TMapWidget и присоединим к проекту. В этом файле опишем тела методов нашего класса.

Тут, в общем то, ничего особенного. В конструкторе инциализируются поля и подгружается текстура. Теперь зададим правила рисования в методе Draw.

Расставим точки над и: создаём спрайт, устанавливаем его координаты начала, далее вытягиваем спрайт на столько, сколько у нас задано в Width и Height, то есть вытягиваем на заданные ширину и длину. Всё это нужно потому, что SFML выводит на экран спрайт с размерами задаваемыми загружаемой текстурой. В нашем случае картинка 1024х1024, а нужно её вытянуть в размеры 640х640.

Теперь переходим к главному классу TApplication и добавляем туда объект нового класса TMapWidget.

… и редактируем методы. В метод Init добавляем создание карты, в метод Run – отрисовку нашего объекта, а в метод End – удаление. Собираем программу. Не забываем загрузить какую-либо картинку (главное, чтобы была в png формате) и переименовать её в Grassland. Она у меня размещается в /bin/dbg/img, а exe-файл программы в /bin/dbg/x64. Запускаем программу. Вот что должно примерно получиться: l2-program
Можете поколдовать с размерами окна – размеры интерфейса карты должны остаться неизменными (то есть теми, что мы и задали)
В следующем уроке мы рассмотрим создание класса, который и будет хранить собственно саму карту.

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

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