Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/63: Рейтинг темы: голосов - 63, средняя оценка - 4.98
11 / 11 / 3
Регистрация: 17.12.2010
Сообщений: 52

Создание консольного меню

03.10.2011, 18:38. Показов 12050. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорогие друзья-товарищи, нужен совет по работе с консолью в Windows/Linux.
Существуют ли какие-либо библиотеки (что наверняка) и функции, которые устанавливают взаимодействие системы со "стрелочками":вверх, вниз, вправо, влево? В частности, я хочу сделать консольное меню такого вида:

1)...
2)...<<
3)...

где "<<" - аналог курсора, перемещение которого по экрану зависит от нажатия клавиш направления.
Хочу заметить, что программа пишется без помощи средств среды разработки и т.д., т.е. никакого своего интерфейса рисовать не нужно. Вся работа проходит в командной строке.

Возможно многим мой вопрос покажется глупым, просьба строго не критиковать. Если кто-то сможет посоветовать что-то дельное, буду очень благодарен. (=
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2011, 18:38
Ответы с готовыми решениями:

Создание консольного меню, есть наработки
Нужно создать меню, допустим: 1. Выбрать действие: 1.1 ввести число или строку, потом результат ввода строки или числа записать в файл....

Многократное использование консольного меню на C++
При создании меню на языке C++ возникла проблема: пункт в меню можно выбрать только один раз при запуске программы. При повтором выборе...

Затруднение с реализацией консольного меню
Здравствуйте! Есть задание - необходимо сделать меню в теле основной функции main, предусматривающее выбор типа задания, с посл. переходом...

12
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
03.10.2011, 18:45
ncurses
2
11 / 11 / 3
Регистрация: 17.12.2010
Сообщений: 52
03.10.2011, 19:48  [ТС]
Ого, вроде то, что нужно!

Только её, я так понимаю, скачивать нужно отдельно? Просто при компилировании ошибки выдаёт в месте её подключения...

Добавлено через 1 минуту
К тому же, как я понял, это чисто линуксовская штука?! Если да, то есть что-нибудь более или менее совместимое с виндой?
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
03.10.2011, 19:58
windows.h )
1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
03.10.2011, 20:10
Цитата Сообщение от YusipovIlsur Посмотреть сообщение
К тому же, как я понял, это чисто линуксовская штука?! Если да, то есть что-нибудь более или менее совместимое с виндой?
pdcurses. код получится совместимым с юниксовскими curses'ами.

Добавлено через 46 секунд

Не по теме:

int 13h ;)

1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
03.10.2011, 20:10
как вариант написать свою либу http://msdn.microsoft.com/en-u... 85%29.aspx

Не по теме:

Цитата Сообщение от talis Посмотреть сообщение
int 13h
+ мышка int 33h:)

2
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
03.10.2011, 20:10
Держите, копайте, улучшайте, забирайте, благодарите
C++
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
 
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
char s1[256];
void GotoXY(int X, int Y){
        COORD coord = { X, Y };
        SetConsoleCursorPosition(hStdOut, coord);
} 
 
void SetColor(int text, int background){
        SetConsoleTextAttribute(hStdOut, background*16+text);
}
 
char *Rus (char *s2) {
        AnsiToOem(s2,s1); 
        return s1; 
} 
 
void gamefunc()
{
        system ("cls");
        GotoXY(50,20);
        cout<<Rus("начали игру=)\n");
 
}
 
void menu(){  
        int f=1,k,code;
        SetColor(0,0);
        GotoXY(27,12);
        SetColor(14,0); 
        cout<<Rus("-->Новая игра<--");
        GotoXY(30,13);
        SetColor(15,0); 
        cout<<Rus("   Выход   ");
        do{
                k=0;
                code=getch();
                if (code==224||code==0)
                        code=getch();
                if(code==80){
                        f=f*(-1);
                        if (f==1){
                                GotoXY(27,12); SetColor(14,0); cout<<Rus("-->Новая игра<--");
                                GotoXY(30,13); SetColor(15,0); cout<<Rus("   Выход   ");
                        }else{ 
                                GotoXY(27,12); SetColor(15,0); cout<<Rus("   Новая игра   ");
                                GotoXY(30,13); SetColor(14,0); cout<<Rus("-->Выход<--");
                        }
                }else if(code==72){
                        f=f*(-1);
                        if (f==1){
                                GotoXY(27,12); SetColor(14,0); cout<<Rus("-->Новая игра<--");
                                GotoXY(30,13); SetColor(15,0); cout<<Rus("   Выход   ");
                        }else{ 
                                GotoXY(27,12); SetColor(15,0);  cout<<Rus("   Новая игра   ");
                                GotoXY(30,13); SetColor(14,0); cout<<Rus("-->Выход<--");
                        }
                }else if(code==13) k=1; 
        }while (k==0);
        if(f!=1) exit(0);
        //дальше запускаем функцию игры=)
        gamefunc();
        cin.get();
}
 
void main(){
        menu();
}
2
11 / 11 / 3
Регистрация: 17.12.2010
Сообщений: 52
03.10.2011, 20:14  [ТС]
Отлично =)
Всем большущее спасибо, ребят))
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.10.2011, 20:21
YusipovIlsur, можно и так
https://www.cyberforum.ru/cpp/... ost1962638

Добавлено через 2 минуты
Ну а это простенькое меню без "рисования"
Проверка на цифру
1
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
03.10.2011, 20:22
Цитата Сообщение от YusipovIlsur Посмотреть сообщение
которые устанавливают взаимодействие системы со "стрелочками":вверх, вниз, вправо, влево?
Так можно же сравнивать код нажатой клавиши с кодами нажатий стрелок (их можете узнать из таблицы символов либо через getch поймать отдельно нажатие каждой клавиши и посмотреть коды нужной клавиши (приведя к int)).
0
11 / 11 / 3
Регистрация: 17.12.2010
Сообщений: 52
04.10.2011, 06:07  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
YusipovIlsur, можно и так
https://www.cyberforum.ru/cpp/... ost1962638

Добавлено через 2 минуты
Ну а это простенькое меню без "рисования"
Проверка на цифру
Огромное спасибо за образцы, так будет гораздо проще во всём разобраться (=
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
04.10.2011, 15:03
Позволю себе выложить пример pdcurses. Для полноты картины.
Вложения
Тип файла: zip curses.zip (85.4 Кб, 75 просмотров)
1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
04.10.2011, 15:05
Вот хороший учебник по curses.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2011, 15:05
Помогаю со студенческими работами здесь

Выбор опции из консольного меню стрелками клавиатуры
Подскажите пожалуйста как можно сделать так чтобы я мог выбирать опцию из меню стрелками в консоли но при этом чтобы было видно что я...

Простенькое графическое меню для консольного приложения DOS
помогите реализовать простенькое графическое меню для консольного приложения DOS

Создание консольного калькулятора
Мне задали курсовой проэкт спрограмирования...Нужно на С++ НЕ ИСПОЛЬЗУЯ WINDOWS FORM создать калькулятор, помогите пожалуйста.

Разработка консольного приложения средствами DevC++. Формирование пользовательского текстового меню
на фото есть таблица с фамилиями... мне нужна работа Васильевой Анастасии, а конкретно написать код. Спасибо.

Создание окна из консольного приложения
Подскажите пожалуйста как создать окно в консольном с++


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru