Применение графической библиотеки SDL2.0 для программирования компьютерных игр на языке СИ | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 января, печатный экземпляр отправим 8 января.

Опубликовать статью в журнале

Авторы: , ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №46 (180) ноябрь 2017 г.

Дата публикации: 16.11.2017

Статья просмотрена: 2235 раз

Библиографическое описание:

Коптенок, Е. В. Применение графической библиотеки SDL2.0 для программирования компьютерных игр на языке СИ / Е. В. Коптенок, Д. В. Кустова, И. В. Полшкова. — Текст : непосредственный // Молодой ученый. — 2017. — № 46 (180). — С. 30-33. — URL: https://moluch.ru/archive/180/46408/ (дата обращения: 22.12.2024).



Одной из самых распространенных тем курсовых работ по программированию на первом курсе является написание игровой программы. Данная тема позволяет развить алгоритмическое мышление, продемонстрировать умение работать с основными алгоритмическими конструкциями, такими как циклы или условия, а также владение основными приемами программирования. Кроме того, игровые проекты вызывают интерес и повышают мотивацию студентов. Что не менее важно, они связаны с математическими дисциплинами, так как требуют большого числа расчетов.

Написание игры связано с программированием графики. Существуют различные библиотеки, например, OpenGl, Qt, SFML, Graphics, SDL. Готовые игровые библиотеки и конструкторы не рассматриваются, так как не позволяют в полной мере продемонстрировать степень владения навыками программирования. В статье рассмотрена библиотека SDL.

Общий принцип взаимосвязи процедурных блоков и логики игрового проекта представлен на рисунке 1. Запуск любой игры начинается с вывода меню, из которого производится переход к списку рекордов, загрузке игры, новой игре или осуществляется выход из программы. Сама игра содержит такой важный функциональный блок, как игровой цикл.

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

Далее рассчитываются параметры, значения которых не зависят от пользовательских действий, например, координаты динамических игровых объектов. Следующим шагом является считывание событий мыши и клавиатуры, на основе которых производится пересчет игровых параметров, зависящих от пользовательских действий. Далее производится отрисовка кадра и возврат в начало цикла.

Рис. 1. Схема игрового цикла

Рис. 2. Схема игрового цикла

Библиотека SDL позволяет работать с графическими примитивами, такими как точки, прямые и прямоугольники. Средствами библиотеки можно получать графическую информацию из файлов в форматах.bmp, и.png, воспроизводить звуки, выводить текст, работать с контроллерами и манипуляторами.

Рассмотрим основные функции библиотеки SDL, применяемые для написания игр.

Перед тем как приступить к работе с библиотекой, её нужно проинициализировать. Для этого есть функция int SDL_Init(Uint32 flags), которая принимает параметр, указывающий, какую подсистему инициализировать в SDL. Всего есть несколько подсистем, которые понадобятся для написания игры: подсистема таймера, аудио, видео, sd-привод, джойстик. Если необходимо инициализировать все системы, следует использовать константу SDL_INIT_EVERYTHING.

Первая и основная графическая функция — функция отрисовки окна. Она отрисовывает и выводит на экран окно с заданными размерами и заголовком:

SDL_Window* window = SDL_CreateWindow(«HEllo», 100, 100, 800, 600, SDL_WINDOW_SHOWN);

Параметрами функции являются: заголовок окна, координаты его расположения, размер окна и флаги состояния.

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

Функция SDL_LoadBMP(path) позволяет загружать изображения и в других форматах, но.bmp (256) является для данной библиотеки наиболее оптимальным.

SDL_CreateRenderer(window, -1, 0), функция создания рендерера, и функция его отображения — SDL_RenderPresent(renderer) — являются основными функциями при написании любого проекта, использующего графику.

Рендер представляет собой область памяти, в которой сохраняются все проделанные изменения с графическим представлением.

Для чтения событий есть две функции: SDL_WaitEvent(&event) и SDL_PollEvent(&event). Первая требует гораздо меньше ресурсов процессора, но для реализации игры в режиме реального времени не подходит, поскольку приостанавливает выполнение программы до того момента, как событие совершится.

Типов событий в SDL много, но преимущественно используются события клавиатуры и мыши. Для определения клавиши используем поле переменной, хранящей событие.

Для работы с аудио необходимо подключить заголовочный файл SDL_audio.h. SDL предоставляет единственную функцию для загрузки звука, SDL_LoadWAV(). После того как звук загружен, требуется преобразовать его к звуковому формату выходного потока с помощью функции SDL_ConvertAudio() и сделать его доступным для функции микширования.

Mix_PlayChannel(-1, sfx, 0) — функция воспроизведения, где -1 означает, что функция самостоятельно выбирает канал, sfx — воспроизводимый файл, третий параметр — количество раз, уменьшенное на 1, которое будет воспроизведен звук (то есть единожды в данном примере).

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

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

Литература:

  1. Официальный сайт библиотеки SDL. URL: http://www.libsdl.org/
  2. Официальный сайт документации для библиотеки SDL. URL: http://wiki.libsdl.org/FrontPage
  3. Гущин А. Н. Разработка программ с графическим пользовательским интерфейсом на языке СИ с использованием библиотеки SDL //Учебное пособие БГТУ «Военмех», 2014.
  4. Керниган Б., Ритчи Д. Язык программирования Си. — М.: Финансы и статистика, 1992.
  5. Иванова Г. С. Программирование: основы алгоритмизации и процедурное программирование, объектно ориентированное программирование: учеб. Для вузов, 2-е изд., стер.-м.:Кнорус, 2014.
Основные термины (генерируются автоматически): SDL, игровой цикл, библиотека, функция, SFML, игровая программа, написание игры, параметр.


Похожие статьи

Использование современных языков программирования для решения профессиональных задач на примере языка программирования Python

Разработка и создание интерактивного плаката с использованием языка программирования Visual Basic for Application и приложения Microsoft Power Point

Использование языка R для эконометрического моделирования и обеспечения расчетов

Особенности программирования логических игр средствами языка СИ

Использование библиотек Python для распознавания образов

Функция автодополнения в поисковых системах как инструмент для филологического исследования на примере запросов на английском и русском языках

Использование среды GeoGebra при решении задач с параметрами

Использование интерактивного подхода в обучении информатике с применением презентаций на основе макросов

Методика применения манипуляторов в потоках вывода в языке С++

Эффективность различных способов работы с файлами в языках С/С++

Похожие статьи

Использование современных языков программирования для решения профессиональных задач на примере языка программирования Python

Разработка и создание интерактивного плаката с использованием языка программирования Visual Basic for Application и приложения Microsoft Power Point

Использование языка R для эконометрического моделирования и обеспечения расчетов

Особенности программирования логических игр средствами языка СИ

Использование библиотек Python для распознавания образов

Функция автодополнения в поисковых системах как инструмент для филологического исследования на примере запросов на английском и русском языках

Использование среды GeoGebra при решении задач с параметрами

Использование интерактивного подхода в обучении информатике с применением презентаций на основе макросов

Методика применения манипуляторов в потоках вывода в языке С++

Эффективность различных способов работы с файлами в языках С/С++

Задать вопрос