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

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

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

Авторы: , ,

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

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

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

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

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

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



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

Написание игры связано с программированием графики. Существуют различные библиотеки, например, 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, написание игры, параметр.


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

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

Существует множество графических библиотек для написания игр, например, SFML, SDL

Основной функцией SFML является функция отрисовки окна с заданными параметрами, такими

Рис. 2. Игровой цикл программы. С использованием библиотеки SFML на основе...

Использование библиотеки SFML для визуализации результатов...

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

– Network — для сетевых приложений. Логика любой программы, основанной на использовании SFML, строится вокруг т. н. игрового цикла — серии...

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

Одной из подходящих для этого графических библиотек является Simple DirectMedia Layer (SDL).

Игровой цикл построен так: сначала идет проверка различных действий пользователя (чаще всего нажатие определенных клавиш) и пересчет параметров, зависящих от этих...

Применение средств библиотеки QT5 для программирования...

Использование средств библиотеки SFML для написания игровых проектов.

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

Коптенок Елизавета Викторовна — Информация об авторе

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

Использование средств библиотеки SFML для написания игровых проектов.

Игровой интерфейс и управление игрой | Статья в журнале...

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

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

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

Существует множество графических библиотек для написания игр, например, SFML, SDL

Основной функцией SFML является функция отрисовки окна с заданными параметрами, такими

Рис. 2. Игровой цикл программы. С использованием библиотеки SFML на основе...

Использование библиотеки SFML для визуализации результатов...

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

– Network — для сетевых приложений. Логика любой программы, основанной на использовании SFML, строится вокруг т. н. игрового цикла — серии...

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

Одной из подходящих для этого графических библиотек является Simple DirectMedia Layer (SDL).

Игровой цикл построен так: сначала идет проверка различных действий пользователя (чаще всего нажатие определенных клавиш) и пересчет параметров, зависящих от этих...

Применение средств библиотеки QT5 для программирования...

Использование средств библиотеки SFML для написания игровых проектов.

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

Коптенок Елизавета Викторовна — Информация об авторе

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

Использование средств библиотеки SFML для написания игровых проектов.

Игровой интерфейс и управление игрой | Статья в журнале...

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

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