Статья за июнь | June article
This commit is contained in:
44
ru/news/2024-06_memory-text-ui.md
Normal file
44
ru/news/2024-06_memory-text-ui.md
Normal file
@@ -0,0 +1,44 @@
|
||||
Title: Текстовый интерфейс «Памяти»
|
||||
Date: 2024-06-14 00:00
|
||||
Category: News
|
||||
Slug: memory-text-ui
|
||||
Lang: ru
|
||||
|
||||
# Текстовый интерфейс «Памяти»
|
||||
|
||||
В мае реализовал текстовый интерфейс игры «Память» на Python. В C++ перевёл инструментом.
|
||||
|
||||
Реализация логического игрового цикла привела к появлению контроллера, управляющего
|
||||
контекстом. Создание контроллера на Python прошло без происшествий, а вот с версией
|
||||
для C++ пришлось помучиться. Мучения были вызваны тем, что контроллер использует
|
||||
[std::any][any] из C++17, а инструмент ограничен C++11 с целью поддержки OpenWrt.
|
||||
|
||||
Что касается объёма кода, то картина получилась следующей (в строках):
|
||||
|
||||
* (Python) Портируемый код логики: 360
|
||||
* (Python) Портируемый код тестов: 565
|
||||
* (Python) Непортируемый код контроллера, ввода-вывода и т.п.: 350
|
||||
* (C++) Портированный код логики: 360
|
||||
* (C++) Портированный код тестов: 586
|
||||
* (C++) Непортируемый код контроллера, ввода-вывода и т.п.: 565
|
||||
|
||||
В процентах выглядит это так:
|
||||
|
||||
| Язык | Всего строк кода | Портируемого | Непортируемого |
|
||||
| --- | --- | --- | --- |
|
||||
| Python | 1275 (**100%**) | 925 (**72%**) | 350 (**28%**) |
|
||||
| C++ | 1511 (**100%**) | 946 (**62%**) | 565 (**38%**) |
|
||||
|
||||
Выходит, что разработка версии игры «Память» на языке С++ оказалась на
|
||||
62% строк кода дешевле, чем была бы без использования инструмента. Цифры
|
||||
приятные.
|
||||
|
||||
Сам текстовый интерфейс игры «Память» на текущий момент выглядит следующим образом:
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/tChSjw5W8KQ?si=WO5MYLCBhgstVshl" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
|
||||
# Планы на июнь
|
||||
|
||||
В июне сделаю простейший графический интерфейс для версии Python.
|
||||
|
||||
[any]: https://en.cppreference.com/w/cpp/utility/any
|
||||
@@ -30,6 +30,26 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="memory-text-ui.html">Текстовый интерфейс «Памяти»</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2024-06-14 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<h1 id="">Текстовый интерфейс «Памяти»</h1>
|
||||
<p>В мае реализовал текстовый интерфейс игры «Память» на Python. В C++ перевёл инструментом.</p>
|
||||
<p>Реализация логического игрового цикла привела к появлению контроллера, управляющего
|
||||
контекстом. Создание контроллера на Python прошло без происшествий, а вот с версией
|
||||
для C++ пришлось помучиться. Мучения были вызваны тем, что контроллер использует
|
||||
<a href="https://en.cppreference.com/w/cpp/utility/any">std::any</a> из C++17, а инструмент ограничен C++11 с целью поддержки OpenWrt.</p>
|
||||
<p>Что касается объёма кода, то картина получилась следующей (в строках):. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="memory-text-ui.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="memory-logic.html">Игровая логика «Памяти»</a>
|
||||
@@ -211,26 +231,8 @@ Ubuntu Edge</a>. Особенностью продукта должна была
|
||||
<a href="teaching-to-program-2019.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Минусы и плюсы начинания с начала</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2020-01-01 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2020-01-01-ny.jpg" alt="Happy 2020" /></p>
|
||||
<p>Любой, кто следит за нашим прогрессом достаточно долго, может сказать, что мы много раз перезапускали разработку с нуля.</p>
|
||||
<p>Еще до выпуска <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a> мы несколько раз меняли технологии "под капотом". После релиза мы неоднократно делали это снова, отбрасывая уже готовые решения.
|
||||
Может показаться, что сейчас у нас меньше готового, чем перед выходом <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>. Это правда, но не совсем.</p>
|
||||
<p>Когда вышел <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>, у нас была приятно выглядящая (на тот момент) игра с открытым исходным кодом, которая работала под Windows и Linux. С некоторой удачей и усилием в нее можно поиграть и сегодня, но уже не "из коробки".. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 1 из 7</p>
|
||||
<p class="pagination_title">Страница 1 из 8</p>
|
||||
<p>
|
||||
<a href="index2.html">Старее »</a>
|
||||
</p>
|
||||
|
||||
@@ -30,6 +30,24 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Минусы и плюсы начинания с начала</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2020-01-01 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2020-01-01-ny.jpg" alt="Happy 2020" /></p>
|
||||
<p>Любой, кто следит за нашим прогрессом достаточно долго, может сказать, что мы много раз перезапускали разработку с нуля.</p>
|
||||
<p>Еще до выпуска <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a> мы несколько раз меняли технологии "под капотом". После релиза мы неоднократно делали это снова, отбрасывая уже готовые решения.
|
||||
Может показаться, что сейчас у нас меньше готового, чем перед выходом <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>. Это правда, но не совсем.</p>
|
||||
<p>Когда вышел <a href="../game/ogs-mahjong-1.html">"OGS Mahjong"</a>, у нас была приятно выглядящая (на тот момент) игра с открытым исходным кодом, которая работала под Windows и Linux. С некоторой удачей и усилием в нее можно поиграть и сегодня, но уже не "из коробки".. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="the-pros-and-cons-of-restarting-from-scratch.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="on-the-way-to-durable-applications.html">На пути к долговечным приложениям</a>
|
||||
@@ -185,24 +203,8 @@
|
||||
<a href="example-driven-development.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="openscenegraph-examples.html">Кросс-платформенные примеры OpenSceneGraph</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2018-04-20 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2018-04-20-openscenegraph-examples.png" alt="iOS Simulator отображает куб" /></p>
|
||||
<p>Эта статья резюмирует создание первых двух кросс-платформенных примеров OpenSceneGraph.</p>
|
||||
<p>К тому времени, как мы выпустили <a href="mahjong-techdemo1-gameplay.html">первую техническую демонстрацию OGS Mahjong 2</a>, нас уже дожидался <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">запрос на описание работы с изображениями</a> в OpenSceneGraph на Android. Сначала мы рассматривали возможность создания нового самоучителя для <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенного руководства OpenSceneGraph</a>, но позже мы оценили необходимые трудозатраты и посчитали их излишними для освещения такой небольшой темы (по сравнению с тем, что умеет средняя игра) как загрузка изображений. Мы решили продолжить делиться нашими знаниями в виде конкретных примеров. Так на свет появились <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">кросс-платформенные примеры OpenSceneGraph</a>.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="openscenegraph-examples.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 2 из 7</p>
|
||||
<p class="pagination_title">Страница 2 из 8</p>
|
||||
<p>
|
||||
<a href="index.html">« Новее</a>
|
||||
<a href="index3.html">Старее »</a>
|
||||
|
||||
@@ -30,6 +30,22 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="openscenegraph-examples.html">Кросс-платформенные примеры OpenSceneGraph</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2018-04-20 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2018-04-20-openscenegraph-examples.png" alt="iOS Simulator отображает куб" /></p>
|
||||
<p>Эта статья резюмирует создание первых двух кросс-платформенных примеров OpenSceneGraph.</p>
|
||||
<p>К тому времени, как мы выпустили <a href="mahjong-techdemo1-gameplay.html">первую техническую демонстрацию OGS Mahjong 2</a>, нас уже дожидался <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide/issues/4">запрос на описание работы с изображениями</a> в OpenSceneGraph на Android. Сначала мы рассматривали возможность создания нового самоучителя для <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide">кросс-платформенного руководства OpenSceneGraph</a>, но позже мы оценили необходимые трудозатраты и посчитали их излишними для освещения такой небольшой темы (по сравнению с тем, что умеет средняя игра) как загрузка изображений. Мы решили продолжить делиться нашими знаниями в виде конкретных примеров. Так на свет появились <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples">кросс-платформенные примеры OpenSceneGraph</a>.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="openscenegraph-examples.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="mahjong-techdemo1-gameplay.html">Первая технодемка OGS Mahjong 2: Игровая механика</a>
|
||||
@@ -185,24 +201,8 @@
|
||||
<a href="openscenegraph-cross-platform-guide.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="ios-tutorial.html">Самоучитель iOS</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2017-06-08 10:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2017-06-08-ios-refactoring.png" alt="Земля и ракета" /></p>
|
||||
<p>Эта статья описывает проблемы, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>
|
||||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">В феврале</a> мы сумели отобразить простую модель под iOS за считанные дни. Это дало нам уверенность, что самоучитель для iOS мы сделаем столь же быстро. Тем не менее, реальность напомнила нам о простой вещи: быстро сделать можно лишь поделку на коленке, работающую только у самого разработчика; над логически связанным примером, работающим у всех, придётся попотеть.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="ios-tutorial.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 3 из 7</p>
|
||||
<p class="pagination_title">Страница 3 из 8</p>
|
||||
<p>
|
||||
<a href="index2.html">« Новее</a>
|
||||
<a href="index4.html">Старее »</a>
|
||||
|
||||
@@ -30,6 +30,22 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="ios-tutorial.html">Самоучитель iOS</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2017-06-08 10:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2017-06-08-ios-refactoring.png" alt="Земля и ракета" /></p>
|
||||
<p>Эта статья описывает проблемы, с которыми мы столкнулись во время создания самоучителя для iOS в мае 2017.</p>
|
||||
<p><a href="https://twitter.com/OpenGameStudio/status/826816343433498627">В феврале</a> мы сумели отобразить простую модель под iOS за считанные дни. Это дало нам уверенность, что самоучитель для iOS мы сделаем столь же быстро. Тем не менее, реальность напомнила нам о простой вещи: быстро сделать можно лишь поделку на коленке, работающую только у самого разработчика; над логически связанным примером, работающим у всех, придётся попотеть.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="ios-tutorial.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="osg-sample.html">Приложение OpenSceneGraph</a>
|
||||
@@ -176,31 +192,8 @@
|
||||
<a href="2016-tech-showcases.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="2016-september-recap.html">Сентябрь 2016 кратко</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2016-10-11 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2016-10-11_september-recap.png" alt="Маджонг, созданный в прямом эфире" /></p>
|
||||
<p>Эта статья описывает стадии по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>
|
||||
<p>Несмотря на то, что сам прямой эфир длится лишь несколько часов, мы готовимся к нему целый месяц. Рассмотрим каждую стадию прямого эфира подробнее.</p>
|
||||
<ol>
|
||||
<li><p><strong>Черновик.</strong> Создание игры в первый раз.</p>
|
||||
<p>Цели:</p>
|
||||
<ul>
|
||||
<li>проверить наши технологии и исправить основные ошибки;</li>
|
||||
<li>узнать о неудобствах использования технологий, чтобы исправить их в следующей итерации разработки;. . .</li></ul></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="2016-september-recap.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 4 из 7</p>
|
||||
<p class="pagination_title">Страница 4 из 8</p>
|
||||
<p>
|
||||
<a href="index3.html">« Новее</a>
|
||||
<a href="index5.html">Старее »</a>
|
||||
|
||||
@@ -30,6 +30,29 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="2016-september-recap.html">Сентябрь 2016 кратко</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2016-10-11 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p><img src="../../images/2016-10-11_september-recap.png" alt="Маджонг, созданный в прямом эфире" /></p>
|
||||
<p>Эта статья описывает стадии по подготовке и проведению прямого эфира сентября 2016: черновик, репетиция, прямой эфир и публикация.</p>
|
||||
<p>Несмотря на то, что сам прямой эфир длится лишь несколько часов, мы готовимся к нему целый месяц. Рассмотрим каждую стадию прямого эфира подробнее.</p>
|
||||
<ol>
|
||||
<li><p><strong>Черновик.</strong> Создание игры в первый раз.</p>
|
||||
<p>Цели:</p>
|
||||
<ul>
|
||||
<li>проверить наши технологии и исправить основные ошибки;</li>
|
||||
<li>узнать о неудобствах использования технологий, чтобы исправить их в следующей итерации разработки;. . .</li></ul></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="2016-september-recap.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="ogs-editor-0.10.html">OGS Editor 0.10 и материалы прямого эфира</a>
|
||||
@@ -172,23 +195,8 @@
|
||||
<a href="ogs-editor-0.9.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="may-live-session-announcement.html">Прямой эфир: 28 мая 2016</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2016-05-17 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9C%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio&iso=20160528T13&p1=166&ah=3">28 мая 2016 в 13:00 MSK</a>. Присоединяйтесь!</p>
|
||||
<p>. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="may-live-session-announcement.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 5 из 7</p>
|
||||
<p class="pagination_title">Страница 5 из 8</p>
|
||||
<p>
|
||||
<a href="index4.html">« Новее</a>
|
||||
<a href="index6.html">Старее »</a>
|
||||
|
||||
@@ -30,6 +30,21 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="may-live-session-announcement.html">Прямой эфир: 28 мая 2016</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2016-05-17 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Мы рады сообщить, что трансляция <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> состоится <a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=%D0%9C%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9+%D1%8D%D1%84%D0%B8%D1%80+Open+Game+Studio&iso=20160528T13&p1=166&ah=3">28 мая 2016 в 13:00 MSK</a>. Присоединяйтесь!</p>
|
||||
<p>. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="may-live-session-announcement.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="may-live-session-decision.html">Майский прямой эфир (Редактор 0.9)</a>
|
||||
@@ -163,27 +178,8 @@
|
||||
<a href="livesession-editor-07.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="soon-game-creation-editor-07.html">СКОРО: Создание простой игры в прямом эфире (Редактор 0.7)</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2015-11-02 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Как и было обещано, мы готовы предоставить вам Редактор 0.7, с помощью которого можно создать тестовый цех. Тем не менее, после воссоздания цеха стало ясно, что:</p>
|
||||
<ol>
|
||||
<li>это занимает более 8 часов (слишком долго)</li>
|
||||
<li>описание в виде статьи не подходит по формату (слишком скучно)</li>
|
||||
</ol>
|
||||
<p>Поэтому мы решили провести прямую трансляцию на <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> СКОРО, чтобы показать, как создать простую <a title="Whac-a-mole" href="http://google.com/search?q=whac+a+mole">игру типа "поймай крота"</a> с нуля.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="soon-game-creation-editor-07.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 6 из 7</p>
|
||||
<p class="pagination_title">Страница 6 из 8</p>
|
||||
<p>
|
||||
<a href="index5.html">« Новее</a>
|
||||
<a href="index7.html">Старее »</a>
|
||||
|
||||
@@ -30,6 +30,25 @@
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="soon-game-creation-editor-07.html">СКОРО: Создание простой игры в прямом эфире (Редактор 0.7)</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2015-11-02 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Как и было обещано, мы готовы предоставить вам Редактор 0.7, с помощью которого можно создать тестовый цех. Тем не менее, после воссоздания цеха стало ясно, что:</p>
|
||||
<ol>
|
||||
<li>это занимает более 8 часов (слишком долго)</li>
|
||||
<li>описание в виде статьи не подходит по формату (слишком скучно)</li>
|
||||
</ol>
|
||||
<p>Поэтому мы решили провести прямую трансляцию на <a title="LiveCoding" href="https://www.livecoding.tv/kornerr">LiveCoding</a> СКОРО, чтобы показать, как создать простую <a title="Whac-a-mole" href="http://google.com/search?q=whac+a+mole">игру типа "поймай крота"</a> с нуля.. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="soon-game-creation-editor-07.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="bye-desura-hello-humblebundle.html">Прощай, Desura. Здравствуй, Humble Bundle Widget</a>
|
||||
@@ -178,27 +197,11 @@
|
||||
<a href="user-servey-finish-promise.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="2014-another-year-passed.html">И вот прошел еще один год</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2014-12-31 12:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Привет.</p>
|
||||
<p>Подходит к концу год, в течение которого мы разместили на сайте рекордно малое количество новостей. Мы не прекратили разработку, однако пока она находится в фазе "показывать нечего", а свободного времени, которое можно уделять проекту, у каждого из его участников сейчас найдется редко больше чем 30-40 часов в месяц.</p>
|
||||
<p>Но работа продвигается, и подробнее о ней расскажет <a href="exaggerated-expectations.html">статья нашего программиста Михаила Капелько</a>.</p>
|
||||
<p>. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="2014-another-year-passed.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 7 из 7</p>
|
||||
<p class="pagination_title">Страница 7 из 8</p>
|
||||
<p>
|
||||
<a href="index6.html">« Новее</a>
|
||||
<a href="index8.html">Старее »</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
63
ru/news/index8.html
Normal file
63
ru/news/index8.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<link rel="stylesheet" href="../../style.css">
|
||||
</head>
|
||||
<body>
|
||||
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
|
||||
<div id="header">
|
||||
<div>
|
||||
<strong id="title">Open Game Studio</strong>
|
||||
<div id="lang">
|
||||
<a href="../../en/news/index8.html">EN</a>
|
||||
<a href="../../ru/news/index8.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header2">
|
||||
<div class="menu">
|
||||
<a href="../../ru/news/index.html">Новости</a>
|
||||
<a href="../../ru/game/index.html">Игры</a>
|
||||
<a href="../../ru/tool/index.html">Инструменты</a>
|
||||
<a href="../../ru/page/about.html">О нас</a>
|
||||
</div>
|
||||
<a class="discord" href="https://discord.gg/3A6THQabNf">
|
||||
<img src="../../images/discord.png"></img>
|
||||
</a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>Новости</h1>
|
||||
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="2014-another-year-passed.html">И вот прошел еще один год</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2014-12-31 12:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<p>Привет.</p>
|
||||
<p>Подходит к концу год, в течение которого мы разместили на сайте рекордно малое количество новостей. Мы не прекратили разработку, однако пока она находится в фазе "показывать нечего", а свободного времени, которое можно уделять проекту, у каждого из его участников сейчас найдется редко больше чем 30-40 часов в месяц.</p>
|
||||
<p>Но работа продвигается, и подробнее о ней расскажет <a href="exaggerated-expectations.html">статья нашего программиста Михаила Капелько</a>.</p>
|
||||
<p>. . .</p>
|
||||
</div>
|
||||
<div class="news_item_more">
|
||||
<a href="2014-another-year-passed.html">Читать далее</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pagination_title">Страница 8 из 8</p>
|
||||
<p>
|
||||
<a href="index7.html">« Новее</a>
|
||||
</p>
|
||||
|
||||
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
109
ru/news/memory-text-ui.html
Normal file
109
ru/news/memory-text-ui.html
Normal file
@@ -0,0 +1,109 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<link rel="stylesheet" href="../../style.css">
|
||||
</head>
|
||||
<body>
|
||||
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
|
||||
<div id="header">
|
||||
<div>
|
||||
<strong id="title">Open Game Studio</strong>
|
||||
<div id="lang">
|
||||
<a href="../../en/news/memory-text-ui.html">EN</a>
|
||||
<a href="../../ru/news/memory-text-ui.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header2">
|
||||
<div class="menu">
|
||||
<a href="../../ru/news/index.html">Новости</a>
|
||||
<a href="../../ru/game/index.html">Игры</a>
|
||||
<a href="../../ru/tool/index.html">Инструменты</a>
|
||||
<a href="../../ru/page/about.html">О нас</a>
|
||||
</div>
|
||||
<a class="discord" href="https://discord.gg/3A6THQabNf">
|
||||
<img src="../../images/discord.png"></img>
|
||||
</a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="left_item_title">В новостях...</h3>
|
||||
<center>
|
||||
<div class="news_item">
|
||||
<h2 class="news_item_title">
|
||||
<a href="memory-text-ui.html">Текстовый интерфейс «Памяти»</a>
|
||||
</h2>
|
||||
<p class="news_item_date">
|
||||
2024-06-14 00:00
|
||||
</p>
|
||||
<div class="news_item_contents">
|
||||
<h1 id="">Текстовый интерфейс «Памяти»</h1>
|
||||
<p>В мае реализовал текстовый интерфейс игры «Память» на Python. В C++ перевёл инструментом.</p>
|
||||
<p>Реализация логического игрового цикла привела к появлению контроллера, управляющего
|
||||
контекстом. Создание контроллера на Python прошло без происшествий, а вот с версией
|
||||
для C++ пришлось помучиться. Мучения были вызваны тем, что контроллер использует
|
||||
<a href="https://en.cppreference.com/w/cpp/utility/any">std::any</a> из C++17, а инструмент ограничен C++11 с целью поддержки OpenWrt.</p>
|
||||
<p>Что касается объёма кода, то картина получилась следующей (в строках):</p>
|
||||
<ul>
|
||||
<li>(Python) Портируемый код логики: 360</li>
|
||||
<li>(Python) Портируемый код тестов: 565</li>
|
||||
<li>(Python) Непортируемый код контроллера, ввода-вывода и т.п.: 350</li>
|
||||
<li>(C++) Портированный код логики: 360</li>
|
||||
<li>(C++) Портированный код тестов: 586</li>
|
||||
<li>(C++) Непортируемый код контроллера, ввода-вывода и т.п.: 565</li>
|
||||
</ul>
|
||||
<p>В процентах выглядит это так:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Язык</th>
|
||||
<th>Всего строк кода</th>
|
||||
<th>Портируемого</th>
|
||||
<th>Непортируемого</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Python</td>
|
||||
<td>1275 (<strong>100%</strong>)</td>
|
||||
<td>925 (<strong>72%</strong>)</td>
|
||||
<td>350 (<strong>28%</strong>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C++</td>
|
||||
<td>1511 (<strong>100%</strong>)</td>
|
||||
<td>946 (<strong>62%</strong>)</td>
|
||||
<td>565 (<strong>38%</strong>)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Выходит, что разработка версии игры «Память» на языке С++ оказалась на
|
||||
62% строк кода дешевле, чем была бы без использования инструмента. Цифры
|
||||
приятные.</p>
|
||||
<p>Сам текстовый интерфейс игры «Память» на текущий момент выглядит следующим образом:</p>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/tChSjw5W8KQ?si=WO5MYLCBhgstVshl" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
<h1 id="-1">Планы на июнь</h1>
|
||||
<p>В июне сделаю простейший графический интерфейс для версии Python.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
var disqus_config = function () {
|
||||
this.page.url = "https://opengamestudio.org/ru/news/memory-text-ui.html";
|
||||
this.page.identifier = "memory-text-ui.html";
|
||||
};
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
s.src = 'https://opengamestudio.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Пожалуйста, включите JavaScript для просмотра <a href="https://disqus.com/?ref_noscript">комментариев на платформе Disqus.</a></noscript>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user