You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2024-06_memory-text-ui.md 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. Title: Текстовый интерфейс «Памяти»
  2. Date: 2024-06-14 00:00
  3. Category: News
  4. Slug: memory-text-ui
  5. Lang: ru
  6. # Текстовый интерфейс «Памяти»
  7. В мае реализовал текстовый интерфейс игры «Память» на Python. В C++ перевёл инструментом.
  8. Реализация логического игрового цикла привела к появлению контроллера, управляющего
  9. контекстом. Создание контроллера на Python прошло без происшествий, а вот с версией
  10. для C++ пришлось помучиться. Мучения были вызваны тем, что контроллер использует
  11. [std::any][any] из C++17, а инструмент ограничен C++11 с целью поддержки OpenWrt.
  12. Что касается объёма кода, то картина получилась следующей (в строках):
  13. * (Python) Портируемый код логики: 360
  14. * (Python) Портируемый код тестов: 565
  15. * (Python) Непортируемый код контроллера, ввода-вывода и т.п.: 350
  16. * (C++) Портированный код логики: 360
  17. * (C++) Портированный код тестов: 586
  18. * (C++) Непортируемый код контроллера, ввода-вывода и т.п.: 565
  19. В процентах выглядит это так:
  20. | Язык | Всего строк кода | Портируемого | Непортируемого |
  21. | --- | --- | --- | --- |
  22. | Python | 1275 (**100%**) | 925 (**72%**) | 350 (**28%**) |
  23. | C++ | 1511 (**100%**) | 946 (**62%**) | 565 (**38%**) |
  24. Выходит, что разработка версии игры «Память» на языке С++ оказалась на
  25. 62% строк кода дешевле, чем была бы без использования инструмента. Цифры
  26. приятные.
  27. Сам текстовый интерфейс игры «Память» на текущий момент выглядит следующим образом:
  28. <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>
  29. # Планы на июнь
  30. В июне сделаю простейший графический интерфейс для версии Python.
  31. [any]: https://en.cppreference.com/w/cpp/utility/any