Урок 1. Начало

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

Желаю опубликовать цикл уроков по созданию примитивной 4х пошаговой стратегии (TBS). В качестве примера будет использоваться Sid Meier’s Civilization (первая часть, конечно). Плоский вид сверху. Кому хочется изометрии, может переписать часть кода в части вывода изображения карты. Остальные принципы останутся неизменными. Данные уроки будут дублированы в wiki.

Итак, начнём с того, что проясним то, каким правилам я придерживаюсь, и что использую для создания игры. Всё это обозначено здесь. А исходить буду из того, что у вас уже имеются некоторые представления программирования на С/С++, и объяснять, что делает та или иная строчка кода мне дословно не потребуется. Использовать сильно сложные и заумные конструкции для реализации нашей цели я тоже не буду. Весь код будет прокомментирован, исходники можете посмотреть на сайте, указанном в уроке 0. Публиковать новый код буду по мере написания и публикации уроков на этом сайте. Я всю буду практиковать “религию” ООП.
Также, я буду считать, что у вас уже установлена IDE с компилятором, и поставлена туда SFML. Если же нет, то на данном сайте есть пара уроков, как установить SFML к IDE Dev-Cpp, и использовать её в своих проектах под данной средой разработки.

Ну что, поехали?
Открываем среду разработки и создаём новый пустой проект. Я буду использовать собственные названия и пути хранения проекта. Вы же вольны использовать свои. Называем проект: 4x_TBS_Lessons. Сам проект будет храниться в папке: 4x TBS Lessons, файл проекта среды Dev-Cpp я разместил по адресу:
4x TBS Lessons/dev/.
Перейдём к настройкам проекта. Выбираем закладку “Компоновка”. Вводим каталоги вывода объектных и исполняемых файлов.
Для исполняемых: ../bin/dbg/x64/
Для объектных: ../obj/dbg/x64/
Не забываем создать данные папки в корневом каталоге проекта (среда разработки и компилятор их сами не создадут). Ну и переопределяем имя выходного файла: 4x_TBS_Lessons.exe.

Далее. Переходим во вкладку “Параметры”, и в поле под словом “Linker:” вносим все необходимые ключи. Так как я буду использовать статическую линковку SFML к нашему проекту, то и внесу все требуемые для этого ключи. Перечислять их не буду, какие ключи нужны для статической линковки, а какие – для динамической, можно посмотреть здесь.
Во вкладке “Компилятор” выбираем компилятор: “TDM-GCC 4.9.2 64-bit Debug” и нажимаем ОК.

Создаем новый файл и добавляем его к проекту. Назовём его Main.hpp. Там будет храниться все заголовочные файлы SFML, которые мы будем подключать везде, где это нам понадобится:

Создаём ещё один файл и добавляем к проекту. Называем Main.cpp – здесь будет располагаться точка входа в программу (main-функция):

Так как мы исповедуем принципы ООП, то сразу создаем новый класс, которые будет выполнять функции приложения. Так и назовём – TApplication. Добавим туда три метода: инициализация, рабочий цикл и деинициализация.
Также ещё добавил поле Window – окно, где будет отображаться работа приложения.

Чтобы не раздувать статью, я удаляю комментарии из кода, публикуемом здесь. Но полный вариант находится на облаке.
Итак, инициализируем поле Window в методе Init. Также добавляем главный цикл программы в метод Run, и деинициализацию (разрушение) окна в End.

Теперь добавляем объект TApplication в main-функцию, и делаем вызовы все трёх методов данного класса.

Собираем программу и запускаем. Теперь у нас есть рабочий начальный вариант программы оформленный по всем канонам ООП.
На этом уроке всё. В следующем рассмотрим создание игровой карты, где и будет происходит всё действие игры.

Буду благодарен, если поделитесь: