LINUX.ORG.RU
ФорумGames

ZweiStein почти готов. Баги и недоделки в наличии, но и функциональность присутствует в полном объёме

 , ,


1

1

ZweiStein это TUI ремейк Einstein головоломки (которая в свою очередь ремейк Sherlock головоломки под DOS).
Распространяется под GPL 3 лицензией.
Код тут: https://github.com/ANGulchenko/ZweiStein
Выглядит так: http://asciigames.pp.ua/images/ZweiStein/screenshots/ZweiStein_screenshot_002.png
Там же, на ГитХабе, можете скачать AMD64 скомпилированую версию если лень самим собирать.

Тестировалось только на двух машинах, поэтому я не удивлюсь если у вас вообще не заработает. В зависимостях есть ncurses.

[ 92%] Linking CXX executable ZweiStein
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: libMainProgram.a(game.cpp.o): undefined reference to symbol 'stdscr'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /lib64/libtinfow.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/ZweiStein.dir/build.make:85: ZweiStein] Error 1
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/ZweiStein.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Harald ★★★★★ ()
Ответ на: комментарий от Harald

Я слышал что линковка с ncurses иногда может приводить к подобной срани. У меня не было воможности поэкспериментировать – я впервые работаю с ncurses.

Можешь скачать уже собранную версию если вдруг интересно.

A_Stahl ()
Ответ на: комментарий от Harald
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7f2d450 in _nc_setupscreen_sp () from /lib64/libncursesw.so.6
(gdb) bt full
#0  0x00007ffff7f2d450 in _nc_setupscreen_sp () from /lib64/libncursesw.so.6
No symbol table info available.
#1  0x00007ffff7f28d7c in newterm_sp () from /lib64/libncursesw.so.6
No symbol table info available.
#2  0x00007ffff7f291f9 in newterm () from /lib64/libncursesw.so.6
No symbol table info available.
#3  0x00007ffff7f24b90 in initscr () from /lib64/libncursesw.so.6
No symbol table info available.
#4  0x0000555555556453 in main () at /home/user/temp/ZweiStein/main.cpp:9
        mainwin = 0x555555567393 <_GLOBAL__sub_I__ZN4HintC2Ev()+19>
        game = {field = @0x6, hints = @0x5555555673e5, interface = 0x0, command = 0x0, gameStatus = (unknown: 1431729056)}
(gdb) 
Harald ★★★★★ ()
Ответ на: комментарий от Harald

Некоторые мейнтейнеры, похоже, любят разрезать ncurse на мелкие куски. Глянь, есть ли у тебя libtinfow (с w в конце) и линкуйся с ней если есть; если нет, то попробуй линковаться с libncurses без w в конце.

Вот тебе яркий пример почему подход пакетные-менеджеры-кококо-репозитории-кококо говно. Всё равно нужно таскать с собой почти всё чтобы оно работало. Как в этой всеми вами ненавидимой Винде.

Нужно разобраться в структуре ncurses. И потом статически линковать и горя не знать.

A_Stahl ()
Ответ на: комментарий от A_Stahl

Ну, шрифты какие ты себе поставил, такие и будут – я уж ничего, очевидно, тут поделать не могу.

Это те, что идут по умолчанию в GNOME 3 на RHEL/Fedora/CentOS/Debian, в Ubuntu наверное Ubuntu Mono будет.

Выставил Monospace 12 вместо 10 или сколько там по умолчанию, стало лучше:

http://esxi.z-lab.me:666/~exl_lab/screens/zweistein2.png

Интересно, можно ли сделать так, чтобы текстовый интерфейс игры центрировался в терминале, а не был в правом верхнем углу. Кажется NCurses позволяет узнать количество знакомест (width, height) текущего окна терминала, этим же можно задать и минимальный размер (типа 80x24) для работы игры.

Работает нормально?

Не знаю, не разбирался особо. Ну по WASD курсор передвигается, по Q – выходит.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

интерфейс игры центрировался в терминале

Можно попробовать. Я впервые использую ncurses, но, похоже, у него есть концепция окон. Так что, возможно, мне для этой центровки не придётся даже ничего особо пересчитывать – просто основное окно смещу, а все смещения в коде останутся прежними.

Хорошая идея, спасибо.

A_Stahl ()
Ответ на: комментарий от A_Stahl

Вот тебе яркий пример почему подход пакетные-менеджеры-кококо-репозитории-кококо говно. Всё равно нужно таскать с собой почти всё чтобы оно работало. Как в этой всеми вами ненавидимой Винде.

Починить баг всяко проще, чем самому собирать все зависимости и потом регулярно их обновлять

Harald ★★★★★ ()
Ответ на: комментарий от A_Stahl

Спросить у pkgconfig-а как линковаться с ncurses не рассматривается? Или, о боже мой, заюзать макрос FindCurses у самого cmake, вместо ручного поиска библиотек?

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от A_Stahl

Что за автопоиск такой и чем он поможет в данном конкретном случае?

Поможет тем, что спросит у самой системы где лежит либа и как с ней правильно линковаться

Pinkbyte ★★★★★ ()

Вопрос к многоуважемому топикстартеру

Других ascii игр не планируется для линуксовых терминалов?

С уважением, Ascii-gamer.

anonymous ()
Ответ на: Вопрос к многоуважемому топикстартеру от anonymous

Вообще-то планируется. Изначально у меня была идея писать подобные игры для Андроида, но я не выдержал Андроид инфраструктуры. Писать под эту ОС банально неприятно. Можешь глянуть в Гугл Плее мои FillField и WaHoKe. Очевидно что они будут портированы на ncurses. Это несложно. Есть ещё пару идей, но они масштабны. Х.з. как выйдет. Так что да – игры ещё будут.

A_Stahl ()
Ответ на: комментарий от A_Stahl

Так что да – игры ещё будут.

Отлично. Тогда буду следить за тобой. :-) Являюсь большим фанатом игр для юниксовых терминалов.

С уважением, Ascii-gamer.

anonymous ()