Форум программистов, компьютерный форум CyberForum.ru

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

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

Добавлено через 31 минуту
Сори: для работы с консолькой
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 18:58     Дополнительные функции для работы консолькой
Посмотрите здесь:

C++ API функции для работы с окном
C++ Функции для работы с текстовыми файлами
C++ Две функции для работы с массивом
C++ Функции для работы с массивами
Списки: функции для работы со списками C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
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();
}
Critical
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?
IrineK
Заблокирован
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
}
Critical
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
}
Спасибо, но я уже реализовал работу с клавишами))
Вы не могли бы объяснить работу функции, которую процитировал предыдущим постом?
IrineK
Заблокирован
10.04.2011, 19:39     Дополнительные функции для работы консолькой #6
...я уже реализовал работу с клавишами
Смог найти только несколько таких команд:...
Что-то с уровнем развития не стыкуется.
Critical
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
10.04.2011, 19:43  [ТС]     Дополнительные функции для работы консолькой #7
А чему тут не состыковываться?
Надо знать только как работает _getch() и всё. А как танцевать с консолькой я не пока не очень понял)
iWord
 Аватар для iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109
10.04.2011, 19:51     Дополнительные функции для работы консолькой #8
возможно в С++ подобие ncurses. По крайней мере в чистых сях есть

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

Добавлено через 2 минуты
а вот уважаемый почитайте тут ncurses какраз для c++ вроде. Эта библиотека может создать вам интерфейс в консоли. Когда я с ней знакомился то наступал на грабли с локализацией. NCURSES_V_CPP
Спасибо) Думаю, что она окажется очень полезной))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2011, 20:01     Дополнительные функции для работы консолькой
Еще ссылки по теме:

C++ Есть ли функции для работы со временем
Функции для работы с одномерным массовом C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
10.04.2011, 20:01     Дополнительные функции для работы консолькой #10
Реклама и самореклама - таки двигатели (и не только курсора).
Yandex
Объявления
10.04.2011, 20:01     Дополнительные функции для работы консолькой
Ответ Создать тему
Опции темы

Текущее время: 10:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru