<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; Library SFML</title>
	<atom:link href="http://web.snauka.ru/issues/tag/library-sfml/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Реализация мультимедийного приложения на языке программирования С++ посредством использования библиотеки SFML</title>
		<link>https://web.snauka.ru/issues/2015/12/61029</link>
		<comments>https://web.snauka.ru/issues/2015/12/61029#comments</comments>
		<pubDate>Sun, 13 Dec 2015 14:13:44 +0000</pubDate>
		<dc:creator>Карандеева Ирина Юрьевна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[Library SFML]]></category>
		<category><![CDATA[multimedia application]]></category>
		<category><![CDATA[programming language C ++]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[библиотека SFML]]></category>
		<category><![CDATA[мультимедийное приложение]]></category>
		<category><![CDATA[язык программирования C++]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2015/12/61029</guid>
		<description><![CDATA[Введение На сегодняшний день существует достаточно много языков программирования, часть из них применима для написания игр, часть — для скриптинга, часть — для каких-то специальных целей. Если говорить про написание кода программных обеспечений, то тут исторически наиболее распространён язык программирования C++. Язык С++ проектировался для поддержки абстракции данных и объектно-ориентированного программирования в добавление к традиционному [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Введение</strong></p>
<p style="text-align: justify;"><span><span style="color: black;">На сегодняшний день существует достаточно много языков программирования, часть из них применима для написания игр, часть — для скриптинга, часть — для каких-то специальных целей. Если говорить про написание кода программных обеспечений, то тут исторически наиболее распространён язык программирования C++. </span>Язык С++ проектировался для поддержки абстракции данных и объектно-ориентированного программирования в добавление к традиционному стилю С [1]. C++ и по сей день занимает господствующее положение среди языков программирования в мире.<strong><br />
</strong></span></p>
<p style="text-align: justify;"><span>SFML (Simple and Fast Multimedia Library) — высокоуровневая библиотека, позволяющая разрабатывать мультимедийные приложения, при этом данная библиотека является лучшей альтернативой низкоуровневой библиотеки OpenGL. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Она состоит из пяти модулей: system, window, graphics, audio и network [2]. SFML является кроссплатформенной библиотекой, а это значит, что разработанные приложения будут работать на большинстве операционных систем. SFML поддерживает большое число языков программирования, является упрощенным в использование аналогом SDL. Благодаря тому, что SFML является в отличие от OpenGL высокоуровневой библиотекой, это позволяет добавлять анимацию и музыку в приложение без особых проблем.<br />
</span></p>
<p style="text-align: justify;"><span>В перспективе возможности данной библиотеки могут быть использованы при создании более серьезных и полезных программных обеспечений, в частности, при реализации графического интерфейса программ, способных реализовывать построение сложных технических систем [3-5]. Так как возможность увеличения уровня интерактивности посредством добавления качественного и интуитивного графического интерфейса может способствовать более быстрому включению в работу в процессе проектирования сложных технических систем экспертов, которые бы использовали разработанное программное обеспечение при построении оптимальных структур сложных технических систем.<br />
</span></p>
<p><strong>Создание мультимедийного приложения на языке программирования С++ посредством библиотеки SFML</strong></p>
<p style="text-align: justify;"><span>В качестве примера, демонстрирующего возможности библиотеки SFML, было принято решение создать платформер в стилистике игр на Sega и Dendy. При этом главным положительным и, соответственно, управляемым персонажем было принято решение сделать персонажа игры Sonic – Tails, главным же врагом стал Mario, как известно Sonic и Mario в те времена являлись главными соперниками на рынке игровой индустрии.<br />
</span></p>
<p><strong>1.Анимация движения персонажей</strong></p>
<p style="text-align: justify;"><span>Для начала при создании платформера на языке C++ необходимо продумать, как будет прорисовываться анимация персонажей Tails и Mario, соответственно, так как именно они в платформере передвигаются. Для этого используется быстрый перебор тайлов, который и приводит к иллюзии движения персонажей:<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2015/12/121315_1406_1.jpg" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1 – Тайлсеты для создания анимации движения персонажей<br />
</span></p>
<p><span>На языке С++ код имеет такой вид:<br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">void<span style="color: black;"> update(<span style="color: blue;">float <span style="color: black;"><span style="color: gray;">time<span style="color: black;">)<br />
</span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">{<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    control();<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">switch<span style="color: black;"> (state) {<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">case<span style="color: black;"> right:dx = speed; <span style="color: blue;">break<span style="color: black;">;<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">case<span style="color: black;"> left:dx = -speed; <span style="color: blue;">break<span style="color: black;">;<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">case<span style="color: black;"> up: <span style="color: blue;">break<span style="color: black;">;<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">case<span style="color: black;"> down: dx = 0; <span style="color: blue;">break<span style="color: black;">;<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">case<span style="color: black;"> stay: <span style="color: blue;">break<span style="color: black;">;<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    }<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    x += dx*<span style="color: gray;">time<span style="color: black;">;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    checkCollisionWithMap(dx, 0);<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    y += dy*<span style="color: gray;">time<span style="color: black;">;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    checkCollisionWithMap(0, dy);<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    sprite.setPosition(x + w / 2, y + h / 2);<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    dy = dy + 0.0015*<span style="color: gray;">time<span style="color: black;">;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    currentFrame += <span style="color: gray;">time<span style="color: black;"> * 0.005;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (currentFrame &gt; 7) currentFrame -= 7;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (dx&gt;0) sprite.setTextureRect(IntRect(0 + 45 * <span style="color: blue;">int<span style="color: black;">(currentFrame), 140, 45, 32));<br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">}<br />
</span></p>
<p style="text-align: justify;"><span>Где sprite – это вырезанная из Тайлсета текстура с размерами 45*32, при этом начальная координата задана x=0, y=45; затем если sprite меняется на тайл с координатами 0, 90, затем 0,135, а затем дойдя до 7 тайла, он как видно из этого кода    &#8221;if (currentFrame &gt; 7) currentFrame -= 7;&#8221; снова начинает перебирать тайлы c самого сначала, таким образом, создается иллюзия движения персонажа. При желание можно за место данного тайлсета использовать какой-нибудь более качественный и современный тайлсет, эффект движения при этом значительно улучшится.<br />
</span></p>
<p style="text-align: justify;"><span>Однако персонаж должен уметь двигаться не только вправо, но и как минимум влево, для этого необходимо лишь добавить следующую строчку кода if (dx&lt;0) sprite.setTextureRect(IntRect(0 + 45 * int(currentFrame) + 45, 140, -45, 32)); и спрайты попросту буду зеркально отражаться при движение вправо.<br />
</span></p>
<p style="text-align: justify;"><span>Далее необходимо прописать код, описывающий то, как мы будет управлять движение персонажа:<br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">void<span style="color: black;"> control(){<br />
</span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (health &gt; 0) {<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">        <span style="color: blue;">if<span style="color: black;"> (Keyboard::isKeyPressed){<br />
</span></span></span></p>
<p style="text-align: justify;"><span style="color: black;"><span style="background-color: white;">            <span style="color: blue;">if<span style="color: black;"> ((Keyboard::isKeyPressed(Keyboard::Left))) { state = left; speed = 0.1; }…</span></span></span><br />
</span></p>
<p style="text-align: justify;"><span>То есть при нажатие на клавишу Left, персонаж начинает двигаться влево и при этом создается иллюзия его передвижения. Аналогично можно прописать код для действий при нажатии прочих клавиш. Анимация Mario была прописана аналогично.<br />
</span></p>
<p><strong>2.Загрузка карты и ее скроллинг</strong></p>
<p style="text-align: justify;"><span>Вторым пунктом является загрузка карты и ее скроллинг. Для создания карты использовался специальный редактор карт Tiled Map Editor (TMP). Он хорош тем, что карту, созданную в этом редакторе, состоящем из объектов, тайлов и их слоев, можно сохранить в XML-подобном файле с расширением .tmx и затем с помощью специальной библиотеки TinyXML на C++ считать ее.<br />
</span></p>
<p style="text-align: justify;"><span>В целях того, чтобы не было видно тех участков, которые находятся за границами карты, был написан следующий код:<br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">#include <span style="color: black;"><span style="color: #a31515;">&lt;SFML/Graphics.hpp&gt;<span style="color: black;"><br />
</span></span></span></span></p>
<p><span style="color: blue; consolas; background-color: white;">using <span style="color: black;"><span style="color: blue;">namespace<span style="color: black;"> sf;<br />
</span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">sf::<span style="color: #2b91af;">View<span style="color: black;"> view;<br />
</span></span></span></p>
<p><span style="color: blue; consolas; background-color: white;">void<span style="color: black;"> setPlayerCoordinateForView(<span style="color: blue;">float <span style="color: black;"><span style="color: gray;">x<span style="color: black;">, <span style="color: blue;">float <span style="color: black;"><span style="color: gray;">y<span style="color: black;">) {<br />
</span></span></span></span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">float<span style="color: black;"> tempX = <span style="color: gray;">x<span style="color: black;">; <span style="color: blue;">float<span style="color: black;"> tempY = <span style="color: gray;">y<span style="color: black;">;<br />
</span></span></span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (<span style="color: gray;">x<span style="color: black;"> &lt; 320) tempX = 320;<span style="color: green;">//левая сторона карты<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (<span style="color: gray;">x<span style="color: black;"> &gt; 2300) tempX = 2300;<span style="color: green;">//правая сторона<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (<span style="color: gray;">y<span style="color: black;"> &lt; 240) tempY = 240;<span style="color: green;">//верхняя сторона<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">if<span style="color: black;"> (<span style="color: gray;">y<span style="color: black;"> &gt; 300) tempY = 300;<span style="color: green;">//нижняя сторона<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black;"><span style="background-color: white;">    view.setCenter(tempX, tempY);}</span><br />
</span></p>
<p><strong>3.Взаимодействие персонажа с картой</strong></p>
<p style="text-align: justify;"><span>Для того чтобы персонажи начали физически взаимодействовать с элементами карты необходимо продумать физику игры. Для взаимодействия главного персонажа с элементами карты был написан следующий код:<br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">void<span style="color: black;"> checkCollisionWithMap(<span style="color: blue;">float<span style="color: black;"> Dx, <span style="color: blue;">float<span style="color: black;"> Dy) <span style="color: green;">//взаимодействие с картой<span style="color: black;"><br />
</span></span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">     {<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">         <span style="color: blue;">for<span style="color: black;"> (<span style="color: blue;">int<span style="color: black;"> i = 0; i&lt;obj.size(); i++)<span style="color: green;">//проходимся по объектам<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">         <span style="color: blue;">if<span style="color: black;"> (getRect().intersects(obj[i].rect))<span style="color: green;">//проверяем пересечение игрока с объектом<span style="color: black;"><br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">         {<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">             <span style="color: blue;">if<span style="color: black;"> (obj[i].name == <span style="color: #a31515;">&#8220;solid&#8221;<span style="color: black;">)<span style="color: green;">//если встретили препятствие<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">             {<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">                 <span style="color: blue;">if<span style="color: black;"> (Dy&gt;0)    { y = obj[i].rect.top &#8211; h; dy = 0; onGround = <span style="color: blue;">true<span style="color: black;">; } <span style="color: green;">//если препятствие снизу, то скорость падения равняется 0 и наш персонаж находится на земле<span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">                 <span style="color: blue;">if<span style="color: black;"> (Dy&lt;0)    { y = obj[i].rect.top + obj[i].rect.height; dy = 0; }<span style="color: green;">//если препятствие сверху<span style="color: black;"><br />
</span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">                 <span style="color: blue;">if<span style="color: black;"> (Dx&gt;0)    { x = obj[i].rect.left &#8211; w; }<span style="color: green;">//препятствие справа<span style="color: black;"><br />
</span></span></span></span></span></p>
<p><span style="color: black;"><span style="background-color: white;">                 <span style="color: blue;">if<span style="color: black;"> (Dx&lt;0)    { x = obj[i].rect.left + obj[i].rect.width; }<span style="color: green;">//препятствие с</span></span></span></span>лева<span style="background-color: white;"><br />
</span></span></p>
<p style="text-align: justify;"><span style="color: black;"><span style="background-color: white;">             }</span><span style="color: green;"><br />
</span></span></p>
<p style="text-align: justify;"><span>Аналогично было прописано взаимодействия с картой Марио, с то лишь разницей, что он должен непрерывно ходит справа налево, то есть, на карте его необходимо огородить двумя препятствиями. При этом скорость Марио была задана случайной величиной, то есть Марио постоянно меняет скорость своего передвижение, тем самым усложняя игру.<br />
</span></p>
<p><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2015/12/121315_1406_2.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 2 – Расположения персонажа Mario на карте<br />
</span></p>
<p><strong>4.Взаимодействие с врагом</strong></p>
<p style="text-align: justify;"><span>У любого платформера есть какая-либо цель, миссия, после выполнения которой игра заканчивается либо победой игрока, либо его поражением. В данном платформере в качестве примера было принято решение целью игры сделать победу персонажа игры Sonic – Tails над персонажем из другой игровой вселенной – Mario. Для этого необходимо, во-первых, прописать последствия их столкновений, во-вторых, дать некоторое количество жизней Mario (например, 100) и, в-третьих, прописать два варианта событий – победа и поражение в игре. В следующем коде представлен результат:<br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">if<span style="color: black;"> (p.getRect().intersects(easyEnemy.getRect())) <span style="color: green;">//проверяем пересечение игрока с врагом<span style="color: black;"><br />
</span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">        {<span style="color: blue;">if<span style="color: black;"> ((p.dy &gt; 0)&amp;(p.onGround == <span style="color: blue;">false<span style="color: black;">)&amp;(easyEnemy.health &gt; 0)) { p.dy = -1; easyEnemy.health -= 25; }<span style="color: green;">/*Если игрок падает сверху на еще живого Mario, то он отскакивает от него вверх и при этом количество жизней Mario сокращается на 25*/ <span style="color: black;"><br />
</span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">        <span style="color: blue;">else<span style="color: black;"><br />
<span style="color: blue;">if<span style="color: black;"> ((easyEnemy.health &gt; 0)) {p.sprite.setColor(<span style="color: #2b91af;">Color<span style="color: black;">::Red); p.health-=100;{text2.setString(<span style="color: #a31515;">&#8220;GAME OVER&#8221;<span style="color: black;">); text2.setPosition(view.getCenter().x &#8211; 160, view.getCenter().y &#8211; 0); }} <span style="color: green;">//Если игрока убил Mario, то появляется надпись красного цвета <span style="color: red;">GAME OVER<span style="color: green;"> и экран игры начинает крутится против часовой стрелки, сам же Tails окрашивается в красный цвет. <span style="color: black;"><br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">        <span style="color: blue;">else<span style="color: black;"><br />
<span style="color: blue;">if<span style="color: black;"> (easyEnemy.health &lt;= 0) { easyEnemy.dx = 0; easyEnemy.sprite.setTextureRect(<span style="color: #2b91af;">IntRect<span style="color: black;">(-4, 20, 60, 20)); text2.setString(<span style="color: #a31515;">&#8220;YOU WIN&#8221;<span style="color: black;">); text2.setColor(<span style="color: #2b91af;">Color<span style="color: black;">::Green); text2.setPosition(view.getCenter().x &#8211; 160, view.getCenter().y &#8211; 0); }} <span style="color: green;">//Если игрок 4 раза прыгнул на Mario, то появляется надпись зеленого цвета <span style="color: #00b050;">YOU WIN.<br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span style="times new roman; 14pt; background-color: white;">На рисунке 3 представлены два возможных исхода игры:<br />
</span></p>
<p><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2015/12/121315_1406_3.jpg" alt="" /><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2015/12/121315_1406_4.jpg" alt="" /></p>
<p style="text-align: center;"><span style="color: black; times new roman; 14pt; background-color: white;">Рисунок 3 – Два возможных результата игры победа и поражение главного героя<br />
</span></p>
<p><strong>5.Звук</strong></p>
<p style="text-align: justify;"><span>Благодаря тому, что в качестве мультимедийной библиотеки в данной работе используется SFML, которая является высокоуровневой библиотекой, это позволяет добавлять в приложение музыку, в частности как фоновую, так и для озвучивания отдельных движений, например, прыжков героя. В качестве фоновой музыки была выбрана заглавная композиция фильма Рокки. Для добавления музыкального сопровождения необходимо подключить </span><span style="color: blue;"><span style="background-color: white;">#include<span style="color: black;"><br />
<span style="color: #a31515;">&lt;SFML/Audio.hpp&gt;</span></span></span><br />
</span><span>и прописать в главной функции следующий код:<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: #2b91af;">Music<span style="color: black;"> music;<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    music.openFromFile(<span style="color: #a31515;">&#8220;Music.ogg&#8221;<span style="color: black;">);<br />
</span></span></span></p>
<p><span style="color: black; consolas; background-color: white;">    music.play();<br />
</span></p>
<p><span style="color: black; consolas; background-color: white;">    <span style="color: #2b91af;">Music<span style="color: black;"> jumper;<br />
</span></span></span></p>
<p style="text-align: justify;"><span style="color: black;"><span style="consolas; background-color: white;">    jumper.openFromFile(<span style="color: #a31515;">&#8220;Jump.ogg&#8221;<span style="color: black;">);</span></span></span><span><br />
</span></span></p>
<p><span><br />
</span><span style="color: black; consolas; background-color: white;">    <span style="color: blue;">while<span style="color: black;"> (window.isOpen())<br />
</span></span></span></p>
<p><span style="color: black;"><span style="background-color: white;">    {    <span style="color: blue;">if<span style="color: black;"> (p.state == p.<span style="color: darkslategray;">jump<span style="color: black;">) jumper.play();</span></span></span></span></span><br />
</span>… }</p>
<p><strong>6.Дополнительные элементы</strong></p>
<p style="text-align: justify;"><span>Помимо вышеизложенного в игру было добавлено несколько дополнительных элементов, позволяющих разнообразить процесс игры. Это бонусы ускорения скорости, при взятии этого бонуса скорость героя значительно увеличивается; батуты, прыгая на которые герой взлетает на значительную высоту. Также помимо этого было добавлена анимация при прыжках и прочих движения героя. В перспективе есть возможность добавления искусственной нейронной сети в качестве интеллекта для врага. Для того чтобы игра работала значительно быстрее даже на слабых компьютерах в главной функции был прописан следующий код: </span><span style="color: black; consolas; 9pt; background-color: white;"><br />
</span></p>
<p><span style="color: blue; consolas; background-color: white;">float<span style="color: black;"> time = clock.getElapsedTime().asMicroseconds();<br />
</span></span></p>
<p><span style="color: black; consolas; background-color: white;">        clock.restart();<br />
</span></p>
<p style="text-align: justify;"><span style="color: black;"><span style="background-color: white;">        time = time / 800;</span>// позволяет задавать скорость игры</span><span><br />
</span></p>
<p style="text-align: left;"><span style="color: black;"><strong>Заключение<br />
</strong></span></p>
<p style="text-align: justify;"><span>В данной работе было продемонстрировано разработанное автором на языке высокого уровня С++ мультимедийное приложение с использованием библиотеки SFML. Данное приложение представляет собой анимационный платформер в стилистике олдскульных игр прошлого столетия. Данная работа демонстрирует обширные графические и мультимедийные возможности библиотеки SFML. На данный момент при написании подобного рода приложений используют низкоуровневую библиотеку OpenGL, но возможности данной библиотеки ограничены в сравнении с библиотекой SFML. Результаты данной работы свидетельствуют о том, что в перспективе данную библиотеку можно использовать не только для создания игр, но также и при реализации достаточно серьезных проектов, требующих качественную анимацию и обширные графические возможности. Например, при реализации программного обеспечения позволяющего проектировать сложные технические системы с графической составляющей для более наглядного представления информации.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2015/12/61029/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
