Выбор средств и среды для разработки.

Для реализации проекта нами был выбран язык программирования С++ и высокоуровневая мультимедиа библиотека SFML, которая достаточно проста в изучении и содержит ряд модулей для простого программирования игр и мультимедиа приложений. Язык С++ является универсальным средством для создания программ различной направленности и сложности. Кроме того была использована библиотека TinyXML для работы с XML файлами, облегчающими создание структурированных документов и считывание их программой.

При разработке приложения очень важно выбрать наиболее удобные и эффективные средства для его реализации. Выбранный для использования язык C++ является универсальным средством для создания программ различной направленности и сложности. C++ чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых до сложных программных комплексов самого различного назначения. В частности:

1. Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП,

2. Имеется возможность работы на низком уровне с памятью, адресами, портами.

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

4. Кроссплатформенность. Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем.

5. Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования — при необходимости язык позволяет обеспечить максимальную эффективность программы.

Еще одним использованным средством являлась библиотека SFML(Simple and Fast Multimedia Library). Она достаточно проста в изучении и содержит ряд модулей для простого программирования игр и мультимедиа приложений. Основные ее преимущества:

1. Полностью кроссплатформена (Win, MacOs X, Linux).

2. Полностью открытый исходный код.

3. Библиотеки как для х64 так и х86, также поддержка разных компиляторов.

4. Официально поддерживает языки C и .Net, благодаря сообществу есть порты на Java, Ruby, Python, Go и множество других языков программирования.

5. Все библиотеки независимы друг от друга. То есть можно взять только библиотеку звука или\и графики и т.п. Можно в совокупности всего написать игру.

Помимо этого, была использована библиотека TinyXML, используемая для синтаксического анализирования XML документов, легко интегрируемая в программу. Сам язык XML ( eXtensible Markup Language) является расширяемым языком разметки , удобный для создания и обработки документов программами и одновременно удобный для чтения и создания документов человеком. На данном языке базируется, например, формат книг Fb2, но в данном случае мы использовали его для записи объектов карты, их координат, свойств и координат куска tileset`а (общей текстуры), который принадлежит объекту. Пример такого файла (коментарии курсивом):

<?xml version="1.0" encoding="UTF-8"?> используем кодировку UTF-8

<map version="1.0" orientation="orthogonal" width="100" height="30" tilewidth="32" tileheight="32"> говорим о ориентации карты, ее размерах и разрешении текстур(здесь 32X32)

<tileset firstgid="1" name="set" tilewidth="32" tileheight="32"> имя tileset`а

<image source="files/set.png" width="640" height="480"/> путь до текстуры и ее размеры

</tileset>

<layer name="Слой тайлов 1" width="100" height="30"> тайлы разбиваются на слои для отрисовки одного тайла поверх другого

<data>

<tile gid="0"/> построчная запись элементов, находящихся на данном тайле. Тут 0 является пустотой

<tile gid="0"/>

<tile gid="27"/>

<tile gid="2"/>

…….

<tile gid="0"/>

<tile gid="0"/>

</data>

</layer> тег конца слоя

<layer name="Слой тайлов 2" width="100" height="30"> следующий слой

<data>

<tile gid="0"/>

<tile gid="0"/>

………

<tile gid="0"/>

</data>

</layer>

<objectgroup name="Слой объектов 1" width="100" height="30"> самый интересный слой объектов. Тут задаются свойства объектам, а так же инициализируется местоположение игрока, врагов и монет.

<object name="player" gid="39" x="285" y="256"/> игрок

<object name="solid" x="256" y="288" width="544" height="32"/> твердый объект

……….

<object name="solid" x="416" y="512" width="192" height="64"/>

<object name="solid" x="608" y="448" width="192" height="128"/>

<object name="solid" x="800" y="192" width="32" height="32"/>

<object name="solid" x="301" y="766" width="883" height="30"/> лестница

<object name="ladder" x="1920" y="640" width="32" height="96"/>

<object name="ladder" x="2208" y="640" width="32" height="96"/>

<object name="ladder" x="2496" y="640" width="32" height="96"/>

<object name="ladder" x="1184" y="32" width="32" height="768"/>

<object name="solid" x="1184" y="0" width="352" height="32"/>

<object name="trap" x="896" y="736" width="224" height="32"/> ловушка (шипы)

<object name="Coin" gid="125" x="512" y="480"/> монета

……….

<object name="Coin" gid="125" x="704" y="800"/>

<object name="MovingPlatform" gid="125" x="899" y="701"/> движущаяся платформа

<object name="solid" x="1120" y="704" width="64" height="64"/>

<object name="Coin" gid="125" x="2376" y="635"/>

<object name="Coin" gid="125" x="2624" y="636"/>

<object name="enemy" gid="124" x="672" y="256"/> враг

…..

<object name="enemy" gid="124" x="2976" y="288"/>

</objectgroup> тег конца группы объектов

</map> тег конца карты

Данный файл был получен в результате работы приложения TileMapEditor и при запуске в этой программе выглядит следующим образом: Выбор средств и среды для разработки. - student2.ru

Наши рекомендации