Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1

Как сделать TUI?

09.10.2020, 22:02. Показов 7247. Ответов 47
Метки c++, tui (Все метки)

Студворк — интернет-сервис помощи студентам
Вечер добрый.
Хочу сделать программу на C++ с простейшим TUI, как в bios. На ncurses, просто в консоле как VIM например. Как это сделать на винде?
Гугл ни чего годного не говорит. Cygwin + ncurses тоже не вариант.
Помогите пожалуйста, буду ооочень признателен).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2020, 22:02
Ответы с готовыми решениями:

Библиотека для TUI
День добрый. Подскажите, пожалуйста, существует ли библиотека, основанная на curses (ncurses, pdcurses...), для создания TUI...

Как отладить TUI приложение?
привет всем, У меня есть TUI приложение под solaris. Когда я его запускаю под отладчиком, TUI окно захватывает консоль и я не могу...

TUI и Delphi
Подскажите с чего начать разработку программы с TUI интерфейсом. Цель: написать что-то вроде эмулятора терминала. Нужен только сам...

47
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
11.10.2020, 09:29
Студворк — интернет-сервис помощи студентам
А файл libcurses.a там есть?
Возможно, там есть libncursesw.a - тогда надо подключать -lncursesw.
А можно и в лоб прописать, что-то вроде gcc rain.c S:/MinGW/lib/libncurses.a
0
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
12.10.2020, 11:09  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А файл libcurses.a там есть?
Нет, нету. Я так понял надо его собирать с помощью make
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
12.10.2020, 12:14
Верно.
Когда распакуете релиз в PDCurses-?.*\wincon\ будет Makefile для сборки с помощью gcc библиотеки, в которой для эмуляции curses используется Windows API.
В комментарии, который в начале этого Makefile, написано, как его нужно использовать, чтобы собрать pdcurses.a
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
12.10.2020, 12:35
Цитата Сообщение от NQUARE Посмотреть сообщение
Нет, нету. Я так понял надо его собирать с помощью make
либо просто скачать готовую сборку curses, там будет.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
12.10.2020, 13:47
Там, откуда Вы получили PDCurses, есть и очень краткая инструкция по сборке.
https://github.com/wmcbrine/PD... /README.md

Добавлено через 1 час 5 минут
Цитата Сообщение от NQUARE Посмотреть сообщение
Скачал я вот от сюда архив, распаковал в папку S:\MinGw\lib\pdcurses.
Затем компилю пример
Если хочется собрать свой тест или пример прямо со снапшота или с клонированного локального репозитария,
можно попробовать что-то вроде
Windows Batch file
1
cl -o rain.exe -I ../PDCurses-master ../PDCurses-master/wincon/*.c ../PDCurses-master/pdcurses/*.c ../PDCurses-master/demos/rain.c advapi32.lib user32.lib
Кликните здесь для просмотра всего текста

Windows Batch file
1
rain.exe
Code
1
2
3
4
5
6
7
8
9
10
         o
 
                          -   .
                         / \
                        | O |
                         \ /     -
                          -     |.|
                                 -
 
                              O
0
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
12.10.2020, 20:46  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Верно.
Когда распакуете релиз в PDCurses-?.*\wincon\ будет Makefile для сборки с помощью gcc библиотеки, в которой для эмуляции curses используется Windows API.
В комментарии, который в начале этого Makefile, написано, как его нужно использовать, чтобы собрать pdcurses.a
Пробовал, при сборке выдаёт вот это:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
$ mingw32-make -f Makefile
gcc -c -O2 -Wall -I.. ../pdcurses/addch.c
gcc -c -O2 -Wall -I.. ../pdcurses/addchstr.c
gcc -c -O2 -Wall -I.. ../pdcurses/addstr.c
gcc -c -O2 -Wall -I.. ../pdcurses/attr.c
gcc -c -O2 -Wall -I.. ../pdcurses/beep.c
gcc -c -O2 -Wall -I.. ../pdcurses/bkgd.c
gcc -c -O2 -Wall -I.. ../pdcurses/border.c
gcc -c -O2 -Wall -I.. ../pdcurses/clear.c
gcc -c -O2 -Wall -I.. ../pdcurses/color.c
gcc -c -O2 -Wall -I.. ../pdcurses/delch.c
gcc -c -O2 -Wall -I.. ../pdcurses/deleteln.c
gcc -c -O2 -Wall -I.. ../pdcurses/getch.c
gcc -c -O2 -Wall -I.. ../pdcurses/getstr.c
gcc -c -O2 -Wall -I.. ../pdcurses/getyx.c
gcc -c -O2 -Wall -I.. ../pdcurses/inch.c
gcc -c -O2 -Wall -I.. ../pdcurses/inchstr.c
gcc -c -O2 -Wall -I.. ../pdcurses/initscr.c
gcc -c -O2 -Wall -I.. ../pdcurses/inopts.c
gcc -c -O2 -Wall -I.. ../pdcurses/insch.c
gcc -c -O2 -Wall -I.. ../pdcurses/insstr.c
gcc -c -O2 -Wall -I.. ../pdcurses/instr.c
gcc -c -O2 -Wall -I.. ../pdcurses/kernel.c
gcc -c -O2 -Wall -I.. ../pdcurses/keyname.c
gcc -c -O2 -Wall -I.. ../pdcurses/mouse.c
gcc -c -O2 -Wall -I.. ../pdcurses/move.c
gcc -c -O2 -Wall -I.. ../pdcurses/outopts.c
gcc -c -O2 -Wall -I.. ../pdcurses/overlay.c
gcc -c -O2 -Wall -I.. ../pdcurses/pad.c
gcc -c -O2 -Wall -I.. ../pdcurses/panel.c
gcc -c -O2 -Wall -I.. ../pdcurses/printw.c
gcc -c -O2 -Wall -I.. ../pdcurses/refresh.c
gcc -c -O2 -Wall -I.. ../pdcurses/scanw.c
gcc -c -O2 -Wall -I.. ../pdcurses/scr_dump.c
gcc -c -O2 -Wall -I.. ../pdcurses/scroll.c
gcc -c -O2 -Wall -I.. ../pdcurses/slk.c
gcc -c -O2 -Wall -I.. ../pdcurses/termattr.c
gcc -c -O2 -Wall -I.. ../pdcurses/touch.c
gcc -c -O2 -Wall -I.. ../pdcurses/util.c
gcc -c -O2 -Wall -I.. ../pdcurses/window.c
gcc -c -O2 -Wall -I.. ../pdcurses/debug.c
gcc -c -O2 -Wall -I.. ../wincon/pdcclip.c
gcc -c -O2 -Wall -I.. ../wincon/pdcdisp.c
gcc -c -O2 -Wall -I.. ../wincon/pdcgetsc.c
gcc -c -O2 -Wall -I.. ../wincon/pdckbd.c
gcc -c -O2 -Wall -I.. ../wincon/pdcscrn.c
../wincon/pdcscrn.c:97:5: error: unknown type name 'PCONSOLE_SCREEN_BUFFER_INFOEX
'; did you mean 'PCONSOLE_SCREEN_BUFFER_INFO'?
   97 |     PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     PCONSOLE_SCREEN_BUFFER_INFO
../wincon/pdcscrn.c:99:5: error: unknown type name 'PCONSOLE_SCREEN_BUFFER_INFOEX
'; did you mean 'PCONSOLE_SCREEN_BUFFER_INFO'?
   99 |     PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     PCONSOLE_SCREEN_BUFFER_INFO
../wincon/pdcscrn.c:101:8: error: unknown type name 'SetConsoleScreenBufferInfoEx
Fn'
  101 | static SetConsoleScreenBufferInfoExFn pSetConsoleScreenBufferInfoEx = NUL
L;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c:101:71: warning: initialization of 'int' from 'void *' makes
integer from pointer without a cast [-Wint-conversion]
  101 | static SetConsoleScreenBufferInfoExFn pSetConsoleScreenBufferInfoEx = NUL
L;
      |                                                                       ^~~
~
../wincon/pdcscrn.c:102:8: error: unknown type name 'GetConsoleScreenBufferInfoEx
Fn'
  102 | static GetConsoleScreenBufferInfoExFn pGetConsoleScreenBufferInfoEx = NUL
L;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c:102:71: warning: initialization of 'int' from 'void *' makes
integer from pointer without a cast [-Wint-conversion]
  102 | static GetConsoleScreenBufferInfoExFn pGetConsoleScreenBufferInfoEx = NUL
L;
      |                                                                       ^~~
~
../wincon/pdcscrn.c:105:8: error: unknown type name 'CONSOLE_SCREEN_BUFFER_INFOEX
'
  105 | static CONSOLE_SCREEN_BUFFER_INFOEX console_infoex;
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c: In function '_set_console_infoex':
../wincon/pdcscrn.c:207:10: error: called object 'pSetConsoleScreenBufferInfoEx'
is not a function or function pointer
  207 |     if (!pSetConsoleScreenBufferInfoEx(pdc_con_out, &console_infoex))
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c:101:39: note: declared here
  101 | static SetConsoleScreenBufferInfoExFn pSetConsoleScreenBufferInfoEx = NUL
L;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c: In function '_init_console_infoex':
../wincon/pdcscrn.c:288:19: error: request for member 'cbSize' in something not a
 structure or union
  288 |     console_infoex.cbSize = sizeof(console_infoex);
      |                   ^
../wincon/pdcscrn.c:290:10: error: called object 'pGetConsoleScreenBufferInfoEx'
is not a function or function pointer
  290 |     if (!pGetConsoleScreenBufferInfoEx(pdc_con_out, &console_infoex))
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c:102:39: note: declared here
  102 | static GetConsoleScreenBufferInfoExFn pGetConsoleScreenBufferInfoEx = NUL
L;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../wincon/pdcscrn.c:293:19: error: request for member 'srWindow' in something not
 a structure or union
  293 |     console_infoex.srWindow.Right++;
      |                   ^
../wincon/pdcscrn.c:294:19: error: request for member 'srWindow' in something not
 a structure or union
  294 |     console_infoex.srWindow.Bottom++;
      |                   ^
../wincon/pdcscrn.c: In function '_get_colors':
../wincon/pdcscrn.c:304:28: error: request for member 'cbSize' in something not a
 structure or union
  304 |         if (!console_infoex.cbSize)
      |                            ^
../wincon/pdcscrn.c:307:42: error: request for member 'ColorTable' in something n
ot a structure or union
  307 |             (COLORREF *)(&(console_infoex.ColorTable));
      |                                          ^
../wincon/pdcscrn.c: In function 'PDC_scr_open':
../wincon/pdcscrn.c:498:10: error: 'GetConsoleScreenBufferInfoExFn' undeclared (f
irst use in this function); did you mean 'pGetConsoleScreenBufferInfoEx'?
  498 |         (GetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |          pGetConsoleScreenBufferInfoEx
../wincon/pdcscrn.c:498:10: note: each undeclared identifier is reported only onc
e for each function it appears in
../wincon/pdcscrn.c:498:41: error: expected ';' before 'GetProcAddress'
  498 |         (GetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel,
      |                                         ^~~~~~~~~~~~~~
      |                                         ;
../wincon/pdcscrn.c:501:10: error: 'SetConsoleScreenBufferInfoExFn' undeclared (f
irst use in this function); did you mean 'pSetConsoleScreenBufferInfoEx'?
  501 |         (SetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |          pSetConsoleScreenBufferInfoEx
../wincon/pdcscrn.c:501:41: error: expected ';' before 'GetProcAddress'
  501 |         (SetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel,
      |                                         ^~~~~~~~~~~~~~
      |                                         ;
../wincon/pdcscrn.c:386:13: warning: variable 'h_kernel' set but not used [-Wunus
ed-but-set-variable]
  386 |     HMODULE h_kernel;
      |             ^~~~~~~~
../wincon/pdcscrn.c: In function '_get_colors':
../wincon/pdcscrn.c:315:1: warning: control reaches end of non-void function [-Wr
eturn-type]
  315 | }
      | ^
Makefile:102: recipe for target 'pdcscrn.o' failed
mingw32-make: *** [pdcscrn.o] Error 1

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
либо просто скачать готовую сборку curses, там будет.
А где?
Цитата Сообщение от politoto Посмотреть сообщение
Там, откуда Вы получили PDCurses, есть и очень краткая инструкция по сборке.
Всё делал по этой инструкции, выдаёт тоже самое.
Цитата Сообщение от politoto Посмотреть сообщение
cl -o rain.exe -I ../PDCurses-master ../PDCurses-master/wincon/*.c ../PDCurses-master/pdcurses/*.c ../PDCurses-master/demos/rain.c advapi32.lib user32.lib
Можете пояснить с этой командой?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
13.10.2020, 10:15
Цитата Сообщение от NQUARE Посмотреть сообщение
А где?
я же кидал ссылку где показываю как подключать curses: Консольная змейка
Если немного почитать тему, можно наткнуться и на архив примера: Прошу критики игры "Змейка"
Откуда я сам ее качал уже не помню - просто в гугле вбил.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
13.10.2020, 14:15
Лучший ответ Сообщение было отмечено NQUARE как решение

Решение

Цитата Сообщение от NQUARE Посмотреть сообщение
Windows Batch file
1
cl -o rain.exe -I ../PDCurses-master ../PDCurses-master/wincon/*.c ../PDCurses-master/pdcurses/*.c ../PDCurses-master/demos/rain.c advapi32.lib user32.lib
Можете пояснить с этой командой?
Это командная строка MSVC для сборки примера, в которой я просто добавил все модули из библиотеки в собираемую программу.

Для mingw может быть что-то вроде
Bash
1
2
srcdir=../PDCurses-master/ # e.g.
i686-w64-mingw32-gcc -o mingwrain.exe  -I ${srcdir} ${srcdir}/demos/rain.c  ${srcdir}/wincon/*.c ${srcdir}/pdcurses/*.c
У меня пример успешно собрался и закапал по текстовому окошку.

Добавлено через 3 часа 31 минуту
Цитата Сообщение от NQUARE Посмотреть сообщение
Пробовал, при сборке выдаёт вот это:
Bash
1
mingw32-make -f Makefile
Самир, попробуйте собрать с параметром
Bash
1
mingw32-make -f Makefile INFOEX=N
У Вас не скомпилировался только один файл wincon/pdcscrn.c, в котором есть
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifdef HAVE_NO_INFOEX
/* Console screen buffer information (extended version) */
typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
    ULONG       cbSize;
    COORD       dwSize;
    COORD       dwCursorPosition;
    WORD        wAttributes;
    SMALL_RECT  srWindow;
    COORD       dwMaximumWindowSize;
    WORD        wPopupAttributes;
    BOOL        bFullscreenSupported;
    COLORREF    ColorTable[16];
} CONSOLE_SCREEN_BUFFER_INFOEX;
typedef CONSOLE_SCREEN_BUFFER_INFOEX    *PCONSOLE_SCREEN_BUFFER_INFOEX;
#endif
Одна из функций использует API, которого не было в Windows XP и Windows 2000.
И этот флажок, похоже, нужен, чтобы можно было компилировать с использованием SDK для этих устаревших систем.
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
13.10.2020, 21:32
Цитата Сообщение от NQUARE Посмотреть сообщение
после установки пакета PDCurses из MinGw-get, в папке mingw/lib/pdcurses лежат только скомпелированные демосы.
Эти пакеты ?
Windows Batch file
1
mingw-get list libpdcurses
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Package: mingw32-libpdcurses                          Subsystem: mingw32
Components: dev, dll
 
libpdcurses: Public Domain Curses Implementation
------------------------------------------------
 
Public Domain Curses, aka  PDCurses,  is  an  implementation  of  X/Open
curses  for  multiple  platforms.  This package provides normal, unicode
(wide  char),  and  UTF-8  versions  of  the  library   and   associated
demonstration programs.
 
The mingw32-libpdcurses package provides the runtime library and related
development  files for pdcurses. The associated mingw32-pdcurses package
provides the documentation and demonstration  programs  related  to  the
library.
0
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
14.10.2020, 09:03  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Эти пакеты ?
Нет,
Code
1
2
$ mingw-get libpdcurses
mingw-get: *** FATAL *** libpdcurses: unknown action keyword
.

Вот эти


Добавлено через 26 минут
Цитата Сообщение от politoto Посмотреть сообщение
Самир, попробуйте собрать с параметром
Помогло, всё собралось. Спасибо!

Добавлено через 1 минуту
Хотя у меня Win7 Pro

Добавлено через 3 минуты
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ar rcv pdcurses.a addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o clear
.o color.o delch.o deleteln.o getch.o getstr.o getyx.o inch.o inchstr.o initscr.o
 inopts.o insch.o insstr.o instr.o kernel.o keyname.o mouse.o move.o outopts.o ov
erlay.o pad.o panel.o printw.o refresh.o scanw.o scr_dump.o scroll.o slk.o termat
tr.o touch.o util.o window.o debug.o pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcs
crn.o pdcsetsc.o pdcutil.o
a - addch.o
a - addchstr.o
a - addstr.o
a - attr.o
a - beep.o
a - bkgd.o
a - border.o
a - clear.o
a - color.o
a - delch.o
a - deleteln.o
a - getch.o
a - getstr.o
a - getyx.o
a - inch.o
a - inchstr.o
a - initscr.o
a - inopts.o
a - insch.o
a - insstr.o
a - instr.o
a - kernel.o
a - keyname.o
a - mouse.o
a - move.o
a - outopts.o
a - overlay.o
a - pad.o
a - panel.o
a - printw.o
a - refresh.o
a - scanw.o
a - scr_dump.o
a - scroll.o
a - slk.o
a - termattr.o
a - touch.o
a - util.o
a - window.o
a - debug.o
a - pdcclip.o
a - pdcdisp.o
a - pdcgetsc.o
a - pdckbd.o
a - pdcscrn.o
a - pdcsetsc.o
a - pdcutil.o
И что теперь с этими файлами делать чтобы скомпилить rain.cpp?
И почему они *.o а не *.a?
Цитата Сообщение от politoto Посмотреть сообщение
Это командная строка MSVC для сборки примера, в которой я просто добавил все модули из библиотеки в собираемую программу.
Для mingw может быть что-то вроде
politoto, У меня всё собралось и заработало с такой командой:
Windows Batch file
1
gcc -o rain.exe -I S:\MinGW\lib\pdcurses\ S:\MinGW\lib\pdcurses\wincon\*.c S:\MinGW\lib\pdcurses\pdcurses\*.c S:\MinGW\lib\pdcurses\demos\rain.c
И
C++
1
#define HAVE_NO_INFOEX
В pdcscrn.c

Цитата Сообщение от NQUARE Посмотреть сообщение
И почему они *.o а не *.a?
Я всё таки нашёл файлик pdcurses.a в этом каталоге.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.10.2020, 09:14
Можно с тем же Makefile'ом сделать make rain.exe
Можно попровать "вручную" в командной строке задать путь к библиотеке, как предлагал COKPOWEHEU
https://www.cyberforum.ru/post14903699.html
Bash
1
gcc -I ../PDCurses-master/ ../PDCurses-master//demos/rain.c build/pdcurses.a
1
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
14.10.2020, 09:30  [ТС]
Цитата Сообщение от NQUARE Посмотреть сообщение
И что теперь с этими файлами делать чтобы скомпилить любую свою прогу с использованием pdcurses?
!Вопрос всё ещё актуальный!

Добавлено через 6 минут
Цитата Сообщение от politoto Посмотреть сообщение
Можно с тем же Makefile'ом сделать make rain.exe
Можно попровать "вручную" в командной строке задать путь к библиотеке, как предлагал COKPOWEHEU
https://www.cyberforum.ru/post14903699.html
А нельзя какнить сделать что бы g++ видел
C++
1
#include <curses.h>
?
И что бы компилить можно было
Windows Batch file
1
g++ main.cpp -o main
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.10.2020, 09:36
Лучший ответ Сообщение было отмечено NQUARE как решение

Решение

Цитата Сообщение от NQUARE Посмотреть сообщение
Вот эти
Похоже, это пакеты с документацией и примерами программ, собранных с библиотеками.
The associated mingw32-pdcurses package
provides the documentation and demonstration programs related to the
library.
Чтобы собирать новые программы с pdcurses нужен пакет libpdcurses-dev:
Bash
1
 mingw-get install mingw32-libpdcurses
Windows Batch file
1
dir ..\lib ..\include /b
Code
1
2
3
4
5
6
7
8
libpdcurses.a
libpdcurses.dll.a
libpdcursesu.a
libpdcursesu.dll.a
libpdcursesw.a
libpdcursesw.dll.a
curses.h
panel.h
1
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
14.10.2020, 09:47  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Чтобы собирать новые программы с pdcurses нужен пакет libpdcurses-dev:
Да вы издеваетесь Я же только собрал её из исходников, а тут на тебе.

Добавлено через 5 минут
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
$ dir S:\MinGW\lib S:\MinGW\include /b
binmode.o
charset.alias
crt1.o
crt2.o
crtmt.o
crtst.o
CRT_fp10.o
CRT_fp8.o
CRT_noglob.o
dde1.4
debug
dllcrt1.o
dllcrt2.o
gcc
gcrt1.o
gcrt2.o
gettext
itcl4.0.0
lib-org-w3c-dom.a
lib-org-w3c-dom.la
lib-org-xml-sax.a
lib-org-xml-sax.la
libaclui.a
libadvapi32.a
libapcups.a
libasprintf.a
libasprintf.dll.a
libavicap32.a
libavifil32.a
libbthprops.a
libcap.a
libcfgmgr32.a
libcharset.a
libcharset.dll.a
libcoldname.a
libcomctl32.a
libcomdlg32.a
libcrtdll.a
libcrypt32.a
libctl3d32.a
libd3d8.a
libd3d9.a
libd3dim.a
libd3drm.a
libd3dx8d.a
libd3dx9d.a
libd3dxof.a
libddraw.a
libdhcpcsvc.a
libdinput.a
libdinput8.a
libdlcapi.a
libdmoguids.a
libdnsapi.a
libdplayx.a
libdpnaddr.a
libdpnet.a
libdpnlobby.a
libdpvoice.a
libdsetup.a
libdsound.a
libdxapi.a
libdxerr8.a
libdxerr9.a
libdxguid.a
libfaultrep.a
libffi.a
libffi.la
libgcj.a
libgcj.la
libgcj.spec
libgdi32.a
libgdiplus.a
libgettextlib.dll.a
libgettextpo.a
libgettextpo.dll.a
libgettextsrc.dll.a
libglaux.a
libglu32.a
libgmon.a
libhal.a
libhid.a
libhidparse.a
libicmui.a
libiconv.a
libiconv.dll.a
libigmpagnt.a
libimagehlp.a
libimm32.a
libintl.a
libintl.dll.a
libiphlpapi.a
libkernel32.a
libksproxy.a
libksuser.a
liblargeint.a
libltdl.a
libltdl.dll.a
libltdl.la
liblz32.a
libm.a
libmapi32.a
libmcd.a
libmemalign.a
libmfcuia32.a
libmgmtapi.a
libmingw32.a
libmingwex.a
libmingwthrd.a
libmingwthrd_old.a
libmoldname.a
libmoldname100.a
libmoldname100d.a
libmoldname70.a
libmoldname70d.a
libmoldname71.a
libmoldname71d.a
libmoldname80.a
libmoldname80d.a
libmoldname90.a
libmoldname90d.a
libmoldnamed.a
libmpr.a
libmprapi.a
libmqrt.a
libmsacm32.a
libmscms.a
libmsdmo.a
libmsimg32.a
libmsvcp60.a
libmsvcr100.a
libmsvcr100d.a
libmsvcr70.a
libmsvcr70d.a
libmsvcr71.a
libmsvcr71d.a
libmsvcr80.a
libmsvcr80d.a
libmsvcr90.a
libmsvcr90d.a
libmsvcrt.a
libmsvcrtd.a
libmsvfw32.a
libmswsock.a
libnddeapi.a
libndis.a
libnetapi32.a
libnewdev.a
libntdll.a
libntoskrnl.a
libodbc32.a
libodbccp32.a
libole32.a
liboleacc.a
liboleaut32.a
libolecli32.a
liboledlg.a
libolepro32.a
libolesvr32.a
libopengl32.a
libpdcurses.a
libpdcurses.dll.a
libpdcursesu.a
libpdcursesu.dll.a
libpdcursesw.a
libpdcursesw.dll.a
libpenwin32.a
libpkpd32.a
libpowrprof.a
libpsapi.a
libpthread.a
libpthread.dll.a
libpthreadGC-3.a
libpthreadGC-3.dll.a
libquartz.a
librapi.a
librasapi32.a
librasdlg.a
librpcdce4.a
librpcns4.a
librpcrt4.a
librtm.a
librtutils.a
libscrnsave.a
libscrnsavw.a
libscsiport.a
libsecur32.a
libsetupapi.a
libshell32.a
libshfolder.a
libshlwapi.a
libsnmpapi.a
libstdc++.a
libstdc++.la
libstrmiids.a
libsupc++.a
libsupc++.la
libsvrapi.a
libtapi32.a
libtcl86.a
libtclstub86.a
libtdi.a
libthunk32.a
libtk86.a
libtkstub86.a
liburl.a
libusbcamd.a
libusbcamd2.a
libuser32.a
libuserenv.a
libusp10.a
libuuid.a
libuxtheme.a
libvdmdbg.a
libversion.a
libvfw32.a
libvideoprt.a
libwin32k.a
libwin32spl.a
libwininet.a
libwinmm.a
libwinspool.a
libwinstrm.a
libwldap32.a
libwow32.a
libws2_32.a
libwsnmp32.a
libwsock32.a
libwst.a
libwtsapi32.a
logging.properties
pkgconfig
reg1.3
security
sqlite3.7.15.1
tcl8
tcl8.6
tclConfig.sh
tdbc1.0.0
tdbcmysql1.0.0
tdbcodbc1.0.0
tdbcpostgres1.0.0
thread2.7.0
tk8.6
tkConfig.sh
txtmode.o
accctrl.h
aclapi.h
aclui.h
adsprop.h
afxres.h
alloca.h
amaudio.h
amvideo.h
assert.h
audevcod.h
autosprintf.h
aviriff.h
aygshell.h
basetsd.h
basetyps.h
bdatypes.h
c++
cderr.h
cguid.h
cmnquery.h
comcat.h
commctrl.h
commdlg.h
complex.h
conio.h
control.h
cpl.h
cplext.h
ctype.h
curses.h
custcntl.h
d3d9.h
d3d9caps.h
d3d9types.h
dbt.h
dde.h
ddeml.h
ddk
devguid.h
dhcpcsdk.h
dir.h
direct.h
dirent.h
dlfcn.h
dlgs.h
docobj.h
dos.h
dsadmin.h
dsclient.h
dsgetdc.h
dshow.h
dsquery.h
dsrole.h
dvdevcod.h
dvdmedia.h
dxerr8.h
dxerr9.h
edevdefs.h
errno.h
errorrep.h
errors.h
evcode.h
excpt.h
exdisp.h
exdispid.h
fakemysql.h
fakepq.h
fakesql.h
fcntl.h
features.h
fenv.h
ffi.h
float.h
fltdefs.h
gcj
gdb
gdiplus
gdiplus.h
getopt.h
gettext-po.h
GL
glob.h
gmon.h
gnu
httpext.h
icm.h
iconv.h
idispids.h
il21dec.h
imagehlp.h
imm.h
initguid.h
intshcut.h
inttypes.h
io.h
ipexport.h
iphlpapi.h
ipifcons.h
ipinfoid.h
iprtrmib.h
iptypes.h
ipxconst.h
ipxrtdef.h
ipxtfflt.h
isguids.h
itcl.h
itcl2TclOO.h
itclDecls.h
itclInt.h
itclIntDecls.h
itclMigrate2TclCore.h
itclTclIntStubsFcn.h
java
javax
jni.h
jvmpi.h
ks.h
ksmedia.h
largeint.h
libcharset.h
libgen.h
libintl.h
libltdl
limits.h
lm.h
lmaccess.h
lmalert.h
lmapibuf.h
lmat.h
lmaudit.h
lmbrowsr.h
lmchdev.h
lmconfig.h
lmcons.h
lmerr.h
lmerrlog.h
lmmsg.h
lmremutl.h
lmrepl.h
lmserver.h
lmshare.h
lmsname.h
lmstats.h
lmsvc.h
lmuse.h
lmuseflg.h
lmwksta.h
localcharset.h
locale.h
ltdl.h
lzexpand.h
malloc.h
mapi.h
math.h
mbctype.h
mbstring.h
mciavi.h
mcx.h
mem.h
memory.h
mgm.h
mgmtapi.h
mlang.h
mmreg.h
mmsystem.h
mpegtype.h
mprapi.h
mq.h
msacm.h
mshtml.h
msvcrtver.h
mswsock.h
mysqlStubs.h
nb30.h
nddeapi.h
nspapi.h
ntdef.h
ntdll.h
ntdsapi.h
ntdsbcli.h
ntldap.h
ntsecapi.h
ntsecpkg.h
oaidl.h
objbase.h
objfwd.h
objidl.h
objsafe.h
objsel.h
ocidl.h
odbcinst.h
odbcStubs.h
ole.h
ole2.h
ole2ver.h
oleacc.h
oleauto.h
olectl.h
olectlid.h
oledlg.h
oleidl.h
panel.h
parts
pbt.h
poppack.h
powrprof.h
pqStubs.h
process.h
profil.h
profile.h
prsht.h
psapi.h
pshpack1.h
pshpack2.h
pshpack4.h
pshpack8.h
pthread.h
ptw32_errno.h
qedit.h
rapi.h
ras.h
rasdlg.h
raserror.h
rassapi.h
reason.h
regstr.h
richedit.h
richole.h
routprot.h
rpc.h
rpcdce.h
rpcdce2.h
rpcdcep.h
rpcndr.h
rpcnsi.h
rpcnsip.h
rpcnterr.h
rpcproxy.h
rtutils.h
schannel.h
sched.h
schnlsp.h
scrnsave.h
sddl.h
sdkddkver.h
search.h
secext.h
security.h
semaphore.h
servprov.h
setjmp.h
setupapi.h
share.h
shellapi.h
shldisp.h
shlguid.h
shlobj.h
shlwapi.h
shobjidl.h
signal.h
snmp.h
specstrings.h
sql.h
sqlext.h
sqltypes.h
sqlucode.h
sspi.h
stdint.h
stdio.h
stdlib.h
stm.h
string.h
strings.h
strmif.h
subauth.h
svcguid.h
sys
tchar.h
tcl-private
tcl.h
tclDecls.h
tclOO.h
tclOODecls.h
tclPlatDecls.h
tclThread.h
tclTomMath.h
tclTomMathDecls.h
tdbc.h
tdbcDecls.h
tdbcInt.h
time.h
tk-private
tk.h
tkDecls.h
tkIntXlibDecls.h
tkPlatDecls.h
tlhelp32.h
tmschema.h
unistd.h
unknwn.h
userenv.h
usp10.h
utime.h
uxtheme.h
values.h
vfw.h
vidcap.h
vmr9.h
vptype.h
w32api.h
wchar.h
wctype.h
winable.h
winbase.h
winber.h
wincon.h
wincrypt.h
windef.h
windns.h
windows.h
windowsx.h
winerror.h
wingdi.h
wininet.h
winioctl.h
winldap.h
winnetwk.h
winnls.h
winnt.h
winperf.h
winreg.h
winresrc.h
winsnmp.h
winsock.h
winsock2.h
winspool.h
winsvc.h
winuser.h
winver.h
ws2spi.h
ws2tcpip.h
wsahelp.h
wsipx.h
wsnetbs.h
wspiapi.h
wtsapi32.h
wtypes.h
X11
xprtdefs.h
zmouse.h
_mingw.h
_ptw32.h


Добавлено через 3 минуты
Ну спасибо огромное. Вопрос решён, теперь я могу делать TUI на pdcurses. А есть ещё какие варианты для C++? PDCurses просто привычный, но он для C(
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.10.2020, 10:29
Помню только Turbo Vision
https://github.com/set-soft/tvision
http://tvision.sourceforge.net/
Можно посмотреть на древний C++.
Но интереснее, конечно, сделать самому.

NQUARE, а как Вы используете curses ?
Можно взглянуть на примеры программ ?
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.10.2020, 12:43
Цитата Сообщение от NQUARE Посмотреть сообщение
А есть ещё какие варианты для C++? PDCurses просто привычный, но он для C(
Если просто красить текст и двигать курсор то проще написать самому написать.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
14.10.2020, 12:48
Цитата Сообщение от Avazart Посмотреть сообщение
Если просто красить текст и двигать курсор то проще написать самому написать.
А потом виндузятники будут жаловаться что цвет не поменялся, зато вывелись кракозябры. У них же дефолтный терминал ESC-последовательностей не поддерживает.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.10.2020, 13:22
Так про виндовс и речь. В Linux-е по сути ничего делать не нужно.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
14.10.2020, 13:49
Некоторые последовательности работают.
https://docs.microsoft.com/en-... -sequences
Миниатюры
Как сделать TUI?  
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.10.2020, 15:17
Как я помню там проблемы начинаются когда нужно перемешаться по консоли и пользователь скролит и там все плывет.

Добавлено через 19 минут
politoto, А через pint() или cout ?

Добавлено через 16 секунд
politoto, А через pint() или cout ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2020, 15:17
Помогаю со студенческими работами здесь

Как сделать передвижение квадрата в Unity 2d Как сделать так что бы он двигался как в игре Read BAll 4
Помогите с передвижением квадрата в Unity 2d Как сделать так что бы он двигался как в игре Read BAll 4. Чтобы получается он перекатывался....

Как сделать задание я вообще не знаю как его сделать, если сделаете, скиньте архивом пожалуйста)
Как сделать задание я вообще не знаю как его сделать, если сделаете, скиньте архивом пожалуйста))) Разработать приложение, которое...

В упор не понимаю как сделать столкновение персонажа с объектами. Как мне это сделать?
//Source.cpp #include &lt;SFML/Graphics.hpp&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &quot;map.h&quot; using namespace sf; using...

Как сделать,у меня сервер обычная XP,как мне правильно сделать так,что бы некоторые компы отрезать от инета,но не от базы данных(К+ и 1С и т.п)
Система токая,инет идет на модем,с модема идет на хаб,с хаба на всех??? какой прогой лучше воспльзываться?? если есть возможнасть то...

Как сделать перемещение нескольких файлов с заменой? И как это сделать проще?
Как сделать перемещение нескольких файлов с заменой? Например я ввожу в текстбокс название файлов, потом эти файлы переношу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru