Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
beckham
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 8
#1

Создание интерфейса пользователя в текстовом режиме - C++

28.02.2012, 22:52. Просмотров 1995. Ответов 4
Метки нет (Все метки)

Создание интерфейса пользователя в текстовом режиме. Библиотека PDCurses. (С++)
Задание:
В текстовом режиме экрана реализуйте возможность рисования (какими-либо символами) прямоугольников с помощью клавиш управления курсором.
Всем заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание интерфейса пользователя в текстовом режиме (C++):

Создание игр в текстовом режиме - C++
Привет всем! Тут занялся написанием игрушек в текстовом режиме, типа змейки, тетриса и т.п. Суть в том, что я хочу как можно более...

Работа с экраном в текстовом режиме - C++
Ниже дана программа которая до нажатия Esc повторяет действия: случайным образом выбирает размеры (соотношение 25х80) и положение окна ...

Работа с экраном в текстовом режиме - C++
В меню с выбором пунктов Функциональными Клавишами по программе с клавиатуры в 1-е окно вводится текст с цифрами. Во 2-м окне...

ООП иерархия классов с выводом в текстовом режиме - C++
Помогите с решением "Дана иерархия классов числа-числа кратные 5-числа кратные 25. Написать программу с выводом объектов указанных классов...

Нарисовать мышью прямоугольник в текстовом режиме экрана - C++
Помогите разобраться.. Нужно нарисовать прямоугольник (любыми символами) в текстовом режиме экрана с помощью мышки. Ну я пытался...

Как сделать прокрутку (в текстовом режиме) и менюшку в turbo c - C++
(Turbo c)Если прогамма выводит на экран большое кол-во информации, то некоторая её часть становится недоступной, как же сделать прокрутку...

4
beckham
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 8
01.03.2012, 08:12  [ТС] #2
Помогите написать программу
0
beckham
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 8
02.03.2012, 09:23  [ТС] #3
Пытался сделать что-то подобное, но ничего не получается...Помогите пожалуйста с этим заданием! И можно ли это реализовать как-нибудь по проще(подоступнее)?
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
#include "stdafx.h"
#include <Windows.h>
#include <conio.h>
COORD pos;
HANDLE display;
 
void rect(int len,int wid){
    COORD p=pos;
    SetConsoleCursorPosition(display,p);    printf("%c",0xda);for(int i=0;i<len;i++) printf("%c",0xC4);printf("%c",0xbf);p.Y++;
    for(int j=0;j<wid;j++){
     SetConsoleCursorPosition(display,p);   printf("%c",0xB3);for(int i=0;i<len;i++) printf("%c",' ');printf("%c",0xb3);p.Y++;
    }
    SetConsoleCursorPosition(display,p);    printf("%c",0xc0);for(int i=0;i<len;i++) printf("%c",0xC4);printf("%c",0xD9);
    
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    system("cls");
    display = GetStdHandle(STD_OUTPUT_HANDLE);
    pos.X=0;    pos.Y=0;
    int ln=10,wd=10;
    rect(10,10);
    for(char c=getch();c!=27;c=getch()){
        switch(c){
            case 'd':{pos.X++;break;}
            case 'a':{pos.X--;break;}
            case 's':{pos.Y++;break;}
            case 'w':{pos.Y--;break;}
            case '1':{ln--;break;}          case '2':{ln++;break;}
            case '3':{wd--;break;}          case '4':{wd++;break;}
        };
        system("cls");
        rect(ln,wd);
    }
    return 0;
}
0
beckham
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 8
28.03.2012, 11:36  [ТС] #4
Помогите написать программу
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
28.03.2012, 18:26 #5
Цитата Сообщение от beckham Посмотреть сообщение
но ничего не получается...
Цитата Сообщение от beckham Посмотреть сообщение
Библиотека PDCurses.
конечно не получается, у тебя же *curses даже и не пахнет. Вот пример на ncurses:

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
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
#include <ncurses.h>
#include <stdlib.h>
 
void start(void);
void draw_rect(int, int, int, int);
 
int main(void)
{
    bool start_draw = FALSE;
    int last_row = 0, last_col = 0;
    
    start();
    
    for(;;)
    {
    int c = getch();
    int row, col;
 
    if(c == 'q' || c == 'Q')
        break;
 
    getyx(stdscr, row, col);
    
    switch(c)
    {
    case KEY_LEFT:
        move(row, col - 1);
        break;
    case KEY_RIGHT:
        move(row, col + 1);
        break;
    case KEY_UP:
        move(row - 1, col);
        break;
    case KEY_DOWN:
        move(row + 1, col);
        break;
    case 'c': case 'C':
        start_draw = FALSE;
        clear();
        refresh();
        move(row, col);
        break;
    case ' ':
        if(start_draw == FALSE)
        {
        last_row = row;
        last_col = col;
        addch(' ' | A_REVERSE);
        refresh();
        }
        else
        {
        int same_row = last_row == row;
        int same_col = last_col == col;
        
        if(same_row && same_col)
        {
            addch(' ');
            refresh();
        }
        else if(same_row || same_col)
        {
            continue;
        }
        else
        {
            mvaddch(last_row, last_col, ' ');
            draw_rect(last_row, last_col, row, col);
            refresh();
        }
        }
        
        start_draw = !start_draw;
 
        break;
    }
    }
    
    endwin();
    exit(0);
}
 
void start(void)
{
    initscr();
    keypad(stdscr, TRUE);
    nonl();
    cbreak();
    noecho();
    
    if(has_colors())
    {
    start_color();
    init_pair(1, COLOR_GREEN, COLOR_BLACK);
    attrset(COLOR_PAIR(1));
    }
    else
    {
    endwin();
    fputs("Your terminal doesn't support colors\n", stderr);
    exit(1);
    }
}
 
#define MIN_MAX(X, Y, MIN, MAX)                 \
    do                              \
    {                               \
    if((X) < (Y))                       \
    {                           \
        MIN = X;                        \
        MAX = Y;                        \
    }                           \
    else                            \
    {                           \
        MIN = Y;                        \
        MAX = X;                        \
    }                           \
    } while(0)                          
    
void draw_rect(int last_row, int last_col, int row, int col)
{
    int left, right, top, bottom, lwidth, lheight;
 
    MIN_MAX(last_row, row, top, bottom);
    MIN_MAX(last_col, col, left, right);
 
    lheight = bottom - top - 1;
    lwidth = right - left - 1;
 
    mvaddch(top, left, ACS_ULCORNER);
    hline(ACS_HLINE, lwidth); 
    mvaddch(top, right, ACS_URCORNER);
    mvvline(top + 1, left, ACS_VLINE, lheight);
    
    mvaddch(bottom, left, ACS_LLCORNER);
    hline(ACS_HLINE, lwidth); 
    mvaddch(bottom, right, ACS_LRCORNER);
    mvvline(top + 1, right, ACS_VLINE, lheight);
}
Передвижение курсора выполняется стрелками, 'q' — выход, 'c' — очистка экрана, пробел — установка/снятие точек, которые будут ограничивать прямоугольник.

Создание интерфейса пользователя в текстовом режимеСоздание интерфейса пользователя в текстовом режимеСоздание интерфейса пользователя в текстовом режиме
0
28.03.2012, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2012, 18:26
Привет! Вот еще темы с ответами:

Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default - C++
Сама программа: // фывфвфыв.cpp: определяет точку входа для приложения. // #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include...

Работа с экраном в текстовом режиме (вывод всех цветов фона, разделяя цвета паузой) - C++
Пожалуйста подскажите, как сделать вывод всех цветов фона, разделяя цвета паузой. Задание: Дополнить меню функциональной клавишей F6:...

Создание интерфейса c++ - C++
Я новичок в c++ уже около месяца ищу по поисковикам материал по созданию интерфейса в программе,раньше работал на php и там были заготовки...

Создание интерфейса программы - C++
Здравствуйте, прошу вас мне помочь. Хочу создать приложение на с++, приложение должно будет при запуске просить ввод пароля, и после в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.