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

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

Войти
Регистрация
Восстановить пароль
 
Critical
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 14
#1

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

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

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

Добавлено через 31 минуту
Сори: для работы с консолькой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнительные функции для работы консолькой (C++):

Функции для работы с файлами - C++
Есть на си такая прекрасная функция как fgets(). Мне нужен аналог но со string вместо char. Суть проблемы. Мне нужно из файла...

Функции для работы с массивами - C++
Драсьте, помогите плиз сделать лабу по C++ :) Необходимо написать функции для работы с одномерными массивами: 1) Отведение памяти под...

Функции для работы с динамической памятью - C++
только начал изучать С++ сразу столкнулся с кучей вопросов. задача такая : разработать функции Create,Resize и Remove для создания,...

Есть ли функции для работы со временем - C++
например ввожу 19 10 10 и 20 0 0, промежуток времени составляет 0 49 50, как делать эту задачу без ветвлений

Функции для работы с текстовыми файлами - C++
Файл содержит целые числа. Вычислить сумму значений из файла, в двоичном представлении которых K разрядов установлено в...

API функции для работы с окном - C++
Подскажите, пожалуйста, есть ли API функции в с++, с помощью которых можно закрывать, разворачивать, сворачивать, перемещать и т.п. окно ? ...

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

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

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

Функции для работы с одномерным массовом - C++
Написать функции для работы с одномерным массовом первая функция для расчета суммы элементов одномерного массивы стоящих до первого...

Реализовать функции для работы со временем - C++
Реализовать функции для работы со временем: определение количества прошед*ших секунд, минут, часов, определение времени через 𝑛 секунд,...

Списки: функции для работы со списками - C++
Помогите пожааааааалуйста с задачками!!!! ;) ОПИШИТЕ ФУНКЦИИ ТИПОВЫХ ОПЕРАЦИЙ С СПИСКАМИ: 1. Функция AddHead (int d) добавление узла...

Функции для работы с типом char* - C++
Здравствуйте! Подскажите ресурс, где описана реализация основных функции для работы с указателями на строки


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

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

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