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

Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) - C++

Восстановить пароль Регистрация
 
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
26.06.2013, 11:07     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #1
Добрый день.

Я пытаюсь придумать решение своей проблемы, но не знаю в какую сторону двигаться. Суть такая: мне нужно нарисовать шахматное поле. При этом, использовать не WFAрр, а обычную консоль. Возник вопрос, как мне нарисовать доску и фигуры так, чтобы картинки можно было перемещать и использовать для алгоритмов? Ну, например. Вот я нарисую пешкоподобную фигурку в закрашенном или незакрашенном квадратике. А как сказать программе, что это пешка?

Вопрос в том, что мне не нужно с использованием картинок, мне нужно "вся работа в консоли".

Пожалуйста, если у кого-то есть мысли и идеи по поводу решения данной постановки задачи, я был бы оченгь рад их послушать!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2013, 11:07     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы)
Посмотрите здесь:

C++ я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!
C++ Как оформить консоль?
C++ Как вставить картинку в консоль
C++ C++ Консоль. Графика
C++ Консоль как главное окно!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
26.06.2013, 11:32     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #2
Вы хотите именно в консоли рисовать фигуры? символами текста можно. Так например:
C++
1
2
3
4
5
6
7
8
ЛКСФКСКЛ
ПППППППП
ОООООООО
ОООООООО
ОООООООО
ОООООООО
ПППППППП
ЛКСФКСКЛ
это в смысле на консоли отображается. далее. в начальный момент игры у Вас есть массив, например 8х8, в котором и отображается положение фигур. например так:
C++
1
2
3
4
5
6
7
8
8 9 10 11 12 10 9 8
77777777
00000000
00000000
00000000
00000000
11111111
23456432
ну где 0 - это клетка пуста, 1 - черная пеха, 7 - белая пеха и так далее. это?
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
26.06.2013, 21:17  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #3
@Kukurudza, типа того, только это отображение массива, а я предполагал использовать графику, подключение графической библиотеки.

*таким примерно методом я реализовывал морской бой -- да, это проще и удобней, но в шахматах получается ещё и цвет фигуры, т.е., придётся больше букв, а это не совсем бы хотелось, если честно.
**можно взять вариант с регистром букв... Ну, это уже на крайний случай, если никакая мысль не осенит совсем.
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
27.06.2013, 07:33     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #4
Задача академическая? то есть надо сделать именно так и все?
вообще в консоли можно рисовать разную геометрию, мы занимались таким на первом курсе, лет 6 назад. могу кинуть лабы старые. как прикрепить туда текстуру не знаю, да и консоль для этого не предназначена так то. MFC попробуйте на худой конец, хотя это мертвая технология. DirectX не? Просто вы пытаетесь слетать на Марс на самокате без колес...
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 13:12  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #5
@Kukurudza, нет-нет. Ну вот смотрите. например, в паскале можно рисовать всякие квадратики кружочки и тд и тп.
Я уверен, что в С++ тоже можно, в консоли. Эдакий кубизм.
Но мне бы хотелось, чтобы какую-то группу объектов объединить и представлять как на матрице показали вы.

Т.е., если просто квадрат, (закрашенный или нет), то 0 на матрице внутри.
Если там стоит пешка (прям нарисую поточечно пешку), то отметим её (в матрице, в алгоритме) как 1. Если пешка тёмная светлая. то или 1 или 7.


Вопрос в том, как сказать "что это пешка" и занести её в матрицу?

Возник сейчас вариант: если я поле всё расчерчу ровно и чётко, например, 800 точек на 800, где на 1 клетку будет точка 100х100 (например), то мне нужно будет считывать каждую такую 100х100, проверять её как-то с "шаблонами картинок", если шаблоны картинок совпали, то в матрицу заносим определённую инфу.

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

допустим, вы передвигаете 1 фигуру -- мне нужно заменить, по сути, 2 клетки. вот как бы это так красиво организовать, чтобы не перерисовывать всё -- было бы шикарно.

В общем, вопросов куча, не знаю как правильно бы это всё оформить.

**всё, теперь главное разобрался, что привязка к графике не самая роль. Теперь вопрс о графике консольной мучает -- как проще нарисовать, чтобы заменять в этой системе только 2 клетки, а не все 64 заного перерисовывать?
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
27.06.2013, 13:26     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #6
Вы правильно подметили что вам дана изначальная позиция. вы ее знаете. за один ход действительно может измениться только две клетки, причем по известному закону (закон ну в смысле известный ход). то есть сравнивать кусочки 100на100 это не нужно.
а как рисовать. ну первое что напрашивается это выделить функции рисования для заданных координат на экране (координат всего 8на8 = 64 штуки):
у вас будут следующие функции рисования:
нарисовать_белую_пешку_на_черной_клетке(х, у)
нарисовать_белую_пешку_на_белой_клетке(х, у)
ну и так далее для каждой фигуры-клетки
и тогда проходя по вашей матрице позиций в соответствии с номерочком (1-белая пешка, 7-черная или как там) вы будете вызывать нужную функцию перерисовки.
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 13:35  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #7
А, т.е., всё равно все функции вызывать.
Интересно, а можно сделать так: допустим, у меня нарисована начальная позиция. И у меня есть да, как вы сказали, рисование клеток с определённым видом фигуры, её цветом и на какой она клетке. И ещё есть просто нарисовать клетку.

Заниматься наложением картинки на картинку можно?

т.е., допустим, на координатном квадратике: 200х200 (для первой координаты) и 300х300, стоит пешка. не важно что и как там, просто клетка с пешкой как единая картинка.

и вот я схожу b2-b4. Допустим

тогда, можно ли запустить 2 функции? т.е., одна из функций нарисвует новую клетку b4 с пешкой (там была порсто клетка)
а на старой клетке с пешкой сделает просто клетку?

т.ен., чтобы не использовать все функции от условия и всё перерисовывать?

Эдакая замена существующего, наложение картинки на картинку возможно? Или в консоли такое нельзя сделатьи поэтому, как не крути, всё равно 64 клетки придётся перерисовывать?
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
27.06.2013, 13:42     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #8
Цитата Сообщение от YYwww Посмотреть сообщение
Я уверен, что в С++ тоже можно, в консоли. Эдакий кубизм.
Зря ты так уверен
консоль это не черное окошко
консоль это класс устройств которые могут работать с текстом
например дисплей на часах то же может быть консолью
да есть библиотеки которые могут выводить графику
например у Borland C 3.1 была "graphic.h"
но она была заточена под ДОС
и очень платформа зависима

в чем причина рисовать в консоли?
почему не окна?
если нужно платформо независимый код, используй Qt
потом можно скомпилить и под Винду и под Линукс и под Мак
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 13:50  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #9
ValeryS, проще рисовать))) Зачем мне OpenGL, например, поиск картинок для доски и тд и тп, когда вот функции написал и всё круто. так сказать, "олд упрощение". Я не спорю, что через OpenGL было бы и лучше, и красивей, и качественней (графика), но при дальнейшей работе с проектом мне не нужно это. Т.е., у меня этот проект (шахматы) одна из частей другого проекта. где использование форм может быть проблематичным. Поэтому, упрощаю работу везде и на всём, на чём можно.

Да, может это и не очень правильно, но тут. я считаю, главное ведь как будут шахматы работать, а не как это представить в консоли или в форме, верно?
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
27.06.2013, 13:53     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #10
Цитата Сообщение от YYwww Посмотреть сообщение
тогда, можно ли запустить 2 функции?
можно.
но действительно как я уже написал, куда проще этим заниматься directx'ом например. времени затратишь 2-3 дня на изучение нужного материала. столько же, сколько и на консольную графику.
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
27.06.2013, 14:01     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #11
Цитата Сообщение от YYwww Посмотреть сообщение
ValeryS, проще рисовать)))
т.е самому изобретать алгоритм рисования линий
окружностей,заливки и много чего еще проще чем использовать готовые библиотеки?
прикинь алгоритм заливки замкнутой фигуры
причем OpenGL или там DirectX работает напрямую с железом и оптимизирован
а тебе придется работать только на программном уровне
Цитата Сообщение от YYwww Посмотреть сообщение
. Т.е., у меня этот проект (шахматы) одна из частей другого проекта.
для этого и придуманы DLL
Цитата Сообщение от YYwww Посмотреть сообщение
Да, может это и не очень правильно, но тут. я считаю, главное ведь как будут шахматы работать, а не как это представить в консоли или в форме, верно?
Тогда не заморачивайся с рисованием
а используй шахматную запись
например
Л a1-a6
так и проще будет вводить ходы
а с графикой тебе нужно будет или мышь использовать или курсор гонять
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 14:44  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #12
@ValeryS, изобрести алгоритм рисования для меня, ИМХО, проще, чем использовать готовое.

Пробелма в том, что этот проект для ОС.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
27.06.2013, 14:53     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #13
Вот максимум, что можно выжать из символов аски в консоли.
Кликните здесь для просмотра всего текста
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <iostream>
#include <vector>
#include <windows.h>
 
#define _BLACK 0        
#define _BLUE 1         
#define _GREEN 2        
#define _CYAN 3         
#define _RED 4            
#define _MAGENTA 5         
#define FBROWN 6          
#define _LIGHTGRAY 7      
#define _DARKGRAY 8       
#define _LIGHTBLUE 9      
#define _LIGHTGREEN 10    
#define _LIGHTRED 12      
#define _LIGHTMAGENTA 13   
#define _YELLOW 14        
#define _WHITE 15          
#define FBLUE 16
#define FGREEN 32
#define FAQUA 48
#define FRED 64
#define FPURPLE 80
#define FYELLOW 96
#define FWHITE 112
#define FGRAY 128
#define FISBLUE 144
#define FISGREEN 160
#define FISAQUA 176
#define FISRED 192
 
enum figures { empty_cell = 0, w_pawn, b_pawn, w_knight, b_knight, 
               w_bishop, b_bishop, w_rook, b_rook, w_queen, b_queen, 
               w_king, b_king };
            
typedef std::vector< std::vector< figures > > myVec;
 
 
class ChessBoard
{
    friend std::ostream& operator<<( std::ostream &out, const ChessBoard &b ) {
        
        int fill_color = FBLUE;
        int figure_color;
        
        for( int i = 0; i < b.size; i++, std::cout << std::endl ) {
            fill_color = ( fill_color == FGRAY ? FBLUE : FGRAY );
            for( int j = 0; j < b.size; j++ ) {
                
                switch( b.board[j][i] ) {
                    case empty_cell:
                        b.setColor( fill_color );
                        out << " ";
                        break;
                        
                    case w_pawn:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "p";
                        break;
                        
                    case b_pawn:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "p";
                        break;
                        
                    case w_knight:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "N";
                        break;
                        
                    case b_knight:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "N";
                        break;
                        
                    case w_bishop:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "B";
                        break;
                        
                    case b_bishop:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "B";
                        break;
                        
                    case w_rook:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "R";
                        break;
                        
                    case b_rook:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "R";
                        break;
                        
                    case w_queen:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "Q";
                        break;
                        
                    case b_queen:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "Q";
                        break;  
                        
                    case w_king:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << "K";
                        break;
                        
                    case b_king:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << "K";
                        break;
                }
                fill_color = ( fill_color == FGRAY ? FBLUE : FGRAY );
            }
        }
        return out;
    }
    
    public:
        ChessBoard() : size( 8 ), board( size, std::vector< figures >( size ) ),
                       hStdOut( GetStdHandle( STD_OUTPUT_HANDLE ) ) {
            board[0][0] = b_rook;
            board[1][0] = b_knight;
            board[2][0] = b_bishop;
            board[3][0] = b_queen;
            board[4][0] = b_king;
            board[5][0] = b_bishop;
            board[6][0] = b_knight;
            board[7][0] = b_rook;
            
            for( int i = 0; i < size; i++ )
                board[i][1] = b_pawn;
                
            for( int i = 2; i < 4; i++ ) {
                for( int j = 0; j < size; j++ ) {
                    board[j][i] = empty_cell;
                }
            }
                
            for( int i = 0; i < size; i++ ) 
                board[i][6] = w_pawn;
                
                
            board[0][7] = w_rook;
            board[1][7] = w_knight;
            board[2][7] = w_bishop;
            board[3][7] = w_queen;
            board[4][7] = w_king;
            board[5][7] = w_bishop;
            board[6][7] = w_knight;
            board[7][7] = w_rook;
        }
        
        ~ChessBoard() {
            setColor( _BLACK );
        }
        
        void setColor( int color ) const {
            SetConsoleTextAttribute( hStdOut, color );
        }
        
    private:
        const int size;
        myVec board;
        HANDLE hStdOut;
};
 
int main() {
    ChessBoard b;   
    std::cout << b;
    
    return 0;
}


Добавлено через 3 минуты
Код ужасен для примера, писал давно для своих нужд, так что извиняйте
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 15:26  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #14
@coloc, это символы, хотя я тоже об этом думал!

Права, у меня выползла тьма ошибок, надо убдет библиотеки подправить, я работаю за VS 2010.

Спасибо вам за пример!!
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
27.06.2013, 15:30     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #15
@YYwww, покажите ошибки
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 15:48  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #16
Ой, прошу прощения, там случайно одна из цифр-строчек с этого форума попала между библиотеками. нашёл, исправил, всё работает!


О, да у вас неплохо получилось!

Единственное. что было бы неплохо, это малость ув. картинку.
Прокомментируйте алгоритм вашей работы, вкратце, пожалуйста. *т.е., что вы делали. чтобы так получилось.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
27.06.2013, 15:59     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #17
Алгоритм не сложный:
Сперва создаем двумерный вектор( массив ) из фигур enum figure, где описаны все шахматные фигуры двух цветов.
Потом в перегруженном операторе программа проходит по двум циклам, которые выводят элементы этого вектора на экран. Конструкция свитч выбирает цвет в зависимости от фигуры и выводит ее на екран. В конструкторе присваивается всем элементам вектора определенные фигуры.
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 16:04  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #18
о, более-менее понятно! Большое вам спасибо, @coloc!
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
27.06.2013, 16:13     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #19
Цитата Сообщение от YYwww Посмотреть сообщение
Единственное. что было бы неплохо, это малость ув. картинку.
Кликните здесь для просмотра всего текста
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#include <iostream>
#include <vector>
#include <windows.h>
 
#define _BLACK 0        
#define _BLUE 1         
#define _GREEN 2        
#define _CYAN 3         
#define _RED 4            
#define _MAGENTA 5         
#define FBROWN 6          
#define _LIGHTGRAY 7      
#define _DARKGRAY 8       
#define _LIGHTBLUE 9      
#define _LIGHTGREEN 10    
#define _LIGHTRED 12      
#define _LIGHTMAGENTA 13   
#define _YELLOW 14        
#define _WHITE 15          
#define FBLUE 16
#define FGREEN 32
#define FAQUA 48
#define FRED 64
#define FPURPLE 80
#define FYELLOW 96
#define FWHITE 112
#define FGRAY 128
#define FISBLUE 144
#define FISGREEN 160
#define FISAQUA 176
#define FISRED 192
 
enum figures { empty_cell = 0, w_pawn, b_pawn, w_knight, b_knight, 
               w_bishop, b_bishop, w_rook, b_rook, w_queen, b_queen, 
               w_king, b_king };
            
typedef std::vector< std::vector< figures > > myVec;
 
 
class ChessBoard
{
    friend std::ostream& operator<<( std::ostream &out, const ChessBoard &b ) {
        
        int fill_color = FBLUE;
        int figure_color;
        
        for( int i = 0; i < b.size; i++, out << std::endl ) {
            for( int _i = 0; _i < b.size; _i++) {
                fill_color = ( fill_color == FGRAY ? FBLUE : FGRAY );
                b.setColor( fill_color );
                out << "   ";
            }
            out << std::endl;
            
            fill_color = ( fill_color == FGRAY ? FBLUE : FGRAY );
            
            for( int j = 0; j < b.size; j++ ) {
                
                switch( b.board[j][i] ) {
                    case empty_cell:
                        b.setColor( fill_color );
                        out << "   ";
                        break;
                        
                    case w_pawn:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " p ";
                        break;
                        
                    case b_pawn:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " p ";
                        break;
                        
                    case w_knight:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " N ";
                        break;
                        
                    case b_knight:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " N ";
                        break;
                        
                    case w_bishop:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " B ";
                        break;
                        
                    case b_bishop:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " B ";
                        break;
                        
                    case w_rook:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " R ";
                        break;
                        
                    case b_rook:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " R ";
                        break;
                        
                    case w_queen:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " Q ";
                        break;
                        
                    case b_queen:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " Q ";
                        break;  
                        
                    case w_king:
                        figure_color = _WHITE;
                        b.setColor( figure_color | fill_color );
                        out << " K ";
                        break;
                        
                    case b_king:
                        figure_color = _RED;
                        b.setColor( figure_color | fill_color );
                        out << " K ";
                        break;
                }
                fill_color = ( fill_color == FGRAY ? FBLUE : FGRAY );
            }
        }
        return out;
    }
    
    public:
        ChessBoard() : size( 8 ), board( size, std::vector< figures >( size ) ),
                       hStdOut( GetStdHandle( STD_OUTPUT_HANDLE ) ) {
            board[0][0] = b_rook;
            board[1][0] = b_knight;
            board[2][0] = b_bishop;
            board[3][0] = b_queen;
            board[4][0] = b_king;
            board[5][0] = b_bishop;
            board[6][0] = b_knight;
            board[7][0] = b_rook;
            
            for( int i = 0; i < size; i++ )
                board[i][1] = b_pawn;
                
            for( int i = 2; i < 4; i++ ) {
                for( int j = 0; j < size; j++ ) {
                    board[j][i] = empty_cell;
                }
            }
                
            for( int i = 0; i < size; i++ ) 
                board[i][6] = w_pawn;
                
                
            board[0][7] = w_rook;
            board[1][7] = w_knight;
            board[2][7] = w_bishop;
            board[3][7] = w_queen;
            board[4][7] = w_king;
            board[5][7] = w_bishop;
            board[6][7] = w_knight;
            board[7][7] = w_rook;
        }
        
        ~ChessBoard() {
            setColor( _BLACK );
        }
        
        void setColor( int color ) const {
            SetConsoleTextAttribute( hStdOut, color );
        }
        
    private:
        const int size;
        myVec board;
        HANDLE hStdOut;
};
 
int main() {
    ChessBoard b;
    std::cout << b;
        
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 16:20     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы)
Еще ссылки по теме:

Как быстро вывести в консоль C++
Как задержать консоль? C++
Графика + консоль. Как? C++

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

Или воспользуйтесь поиском по форуму:
YYwww
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 67
27.06.2013, 16:20  [ТС]     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы) #20
@coloc,

Спасибо вам огромное!!!
Yandex
Объявления
27.06.2013, 16:20     Консоль, кубизм, минимализм, как быть? (графика и алгоритмы)
Ответ Создать тему
Опции темы

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