Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
1

Дополнительные функции для работы консолькой

10.04.2011, 18:58. Показов 1171. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу игру: морской бой. Он естественно консольный, но чтобы хоть как-то приукрасить игру хотелось бы знать, как можно изменить цвет текста, бекграунда, перемещать курсор ввода.
Смог найти только несколько таких команд:
C++
1
2
3
system("cls"); //очистка всей консоли
system("mode con cols=70 lines=30"); //установка количества столбцов и строк
setlocale(LC_CTYPE,"Russian"); //установить язык консоли
WinAPI я пока еще не затрагивал.

Добавлено через 31 минуту
Сори: для работы с консолькой
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2011, 18:58
Ответы с готовыми решениями:

Работа с консолькой
Работа с консолью. Обработать клавишу TAB, чтобы при нажатии выводилась строка, например '1111'. Но...

Нужен совет спецов с консолькой
Добрый, коллеги. тема для тез кто в теме ... простите может за тупой вопрос. но загруз не...

Существуют ли для Lazarus удобные функции для работы с консолью (ввод/вывод)
В среде разработчика Delphi есть такие удобные функции. Их можно прописать в начале программы и...

Функции для работы с кольцевыми буферами для STM32
Написал функции-шаблоны для работы с кольцевыми буферами. Параметры каждого буфера, такие как...

9
Заблокирован
10.04.2011, 19:24 2
перемещать курсор ввода
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
void gotoxy(int x,int y)
{
  HANDLE hConsole;
  COORD cursorLoc;
  cout.flush();
  cursorLoc.X = x;
  cursorLoc.Y = y;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsole, cursorLoc);
}
 
int main()
{
    
    for(int i=5; i<15; i++)
    {   gotoxy(10,i);
        cout<<"**";
    }
    for(int i=10; i<40; i++)
    {   gotoxy(i,15);
        cout<<"*";
        gotoxy(i,16);
        cout<<"*";
    }
 
    cin.get();
}
1
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
10.04.2011, 19:30  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
void gotoxy(int x,int y)
{
  HANDLE hConsole;
  COORD cursorLoc;
  cout.flush();
  cursorLoc.X = x;
  cursorLoc.Y = y;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsole, cursorLoc);
}
Спасибо) Но для меня тут почти ничего непонятно(
Можете немного объяснить? Я так понял, это уже WinAPI?
0
Заблокирован
10.04.2011, 19:32 4
Думаю, так даже интересней будет (реакция на стрелки, выход по ESC):

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
#include <iostream>
#include <conio.h>
#include <windows.h>
 
#define UP_ARROW 72
#define LEFT_ARROW 75
#define DOWN_ARROW 80
#define RIGHT_ARROW 77
 
using namespace std;
 
void gotoxy(int x,int y)
{
  HANDLE hConsole;
  COORD cursorLoc;
  cout.flush();
  cursorLoc.X = x;
  cursorLoc.Y = y;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsole, cursorLoc);
}
 
int main()
{       int KeyStroke;
        cout << "Press Escape to quit." << endl;
                int i=40, j=10;
                gotoxy(i,j); cout<<"*";
        do
{       KeyStroke = getch();
        if (KeyStroke == 224)
        {       KeyStroke = getch(); // Even though there are 2 getch() it reads one keystroke
                switch (KeyStroke)
                {
                case UP_ARROW:
                        gotoxy(i,--j); cout<<"*";
                        break;
                case DOWN_ARROW:
                        gotoxy(i,++j); cout<<"*";
                        break;
                case LEFT_ARROW:
                        gotoxy(--i,j); cout<<"*";
                        break;
                case RIGHT_ARROW:
                        gotoxy(++i,j); cout<<"*";
                break;
               }
        }
 }while (KeyStroke != 27); // 27 = Escape key
}
1
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
10.04.2011, 19:37  [ТС] 5
Цитата Сообщение от IrineK Посмотреть сообщение
Думаю, так даже интересней будет (реакция на стрелки, выход по ESC):

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
#include <iostream>
#include <conio.h>
#include <windows.h>
 
#define UP_ARROW 72
#define LEFT_ARROW 75
#define DOWN_ARROW 80
#define RIGHT_ARROW 77
 
using namespace std;
 
void gotoxy(int x,int y)
{
  HANDLE hConsole;
  COORD cursorLoc;
  cout.flush();
  cursorLoc.X = x;
  cursorLoc.Y = y;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsole, cursorLoc);
}
 
int main()
{       int KeyStroke;
        cout << "Press Escape to quit." << endl;
                int i=40, j=10;
                gotoxy(i,j); cout<<"*";
        do
{       KeyStroke = getch();
        if (KeyStroke == 224)
        {       KeyStroke = getch(); // Even though there are 2 getch() it reads one keystroke
                switch (KeyStroke)
                {
                case UP_ARROW:
                        gotoxy(i,--j); cout<<"*";
                        break;
                case DOWN_ARROW:
                        gotoxy(i,++j); cout<<"*";
                        break;
                case LEFT_ARROW:
                        gotoxy(--i,j); cout<<"*";
                        break;
                case RIGHT_ARROW:
                        gotoxy(++i,j); cout<<"*";
                break;
               }
        }
 }while (KeyStroke != 27); // 27 = Escape key
}
Спасибо, но я уже реализовал работу с клавишами))
Вы не могли бы объяснить работу функции, которую процитировал предыдущим постом?
0
Заблокирован
10.04.2011, 19:39 6
...я уже реализовал работу с клавишами
Смог найти только несколько таких команд:...
Что-то с уровнем развития не стыкуется.
1
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
10.04.2011, 19:43  [ТС] 7
А чему тут не состыковываться?
Надо знать только как работает _getch() и всё. А как танцевать с консолькой я не пока не очень понял)
0
10 / 10 / 2
Регистрация: 21.12.2010
Сообщений: 108
10.04.2011, 19:51 8
возможно в С++ подобие ncurses. По крайней мере в чистых сях есть

Добавлено через 2 минуты
а вот уважаемый почитайте тут ncurses какраз для c++ вроде. Эта библиотека может создать вам интерфейс в консоли. Когда я с ней знакомился то наступал на грабли с локализацией. NCURSES_V_CPP
0
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
10.04.2011, 19:55  [ТС] 9
Цитата Сообщение от iWord Посмотреть сообщение
возможно в С++ подобие ncurses. По крайней мере в чистых сях есть

Добавлено через 2 минуты
а вот уважаемый почитайте тут ncurses какраз для c++ вроде. Эта библиотека может создать вам интерфейс в консоли. Когда я с ней знакомился то наступал на грабли с локализацией. NCURSES_V_CPP
Спасибо) Думаю, что она окажется очень полезной))
0
Заблокирован
10.04.2011, 20:01 10
Реклама и самореклама - таки двигатели (и не только курсора).
0
10.04.2011, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2011, 20:01
Помогаю со студенческими работами здесь

Как отключить дополнительные функции клавиш F1-F12!
Всем привет!Вопрос,наверное,банальный (где то даже тупой),но я лично уже запарился) Мне нужно что...

Как добавить дополнительные оси на график функции?
Здравствуйте! Как добавить дополнительные оси на график функции. На графике при диапазоне 360...

Функции для работы с консолью
Добрый день. Уже начал писать клиент-серверное приложение на WIN API. Собственно сама проблема:...

Функции для работы со строками в VB
Помогите со строками. Какие есть функции для обработки строк? В хелпе ничего разобрать не смог, а...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru