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

Как в командной строке нарисовать шахматную доску?

22.03.2021, 19:20. Показов 1308. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно, чтобы в командной строке было некое подобие клеток, не могу разобраться как это сделать. Подскажите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2021, 19:20
Ответы с готовыми решениями:

Нарисовать шахматную доску
Ввести число N и нарисовать шахматную доску размера NxN, где верхнее левое - белое. Белые поля...

Нарисовать шахматную доску
Задание из книги Страуструпа "Принципы и практика использования С++": "Нарисуйте доску для шахмат...

Нарисовать шахматную доску 8x8
Вообщем нужно создать программу которая выводит нарисованную шахматную доску 8x8.Если есть код с...

Как проще и оптимальнее нарисовать шахматную доску
Всем привет! Сейчас пытаюсь написать шашки на Qt, собственно, начал с шахматной доски. После...

4
596 / 288 / 178
Регистрация: 06.06.2016
Сообщений: 549
22.03.2021, 19:56 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 #include <iostream>
 
 int main()
 {
    const int dim = 8;
        for ( int i = 0; i < dim; ++i )
        {
              for ( int j = 0; j < dim; ++j )
                 if ( ( i + j ) % 2 )
                     std::cout << "#";
                 else
                     std::cout << " ";
           std::cout << "\n";
        }
    return 0;
 }
1
1 / 1 / 0
Регистрация: 14.02.2021
Сообщений: 173
22.03.2021, 20:06  [ТС] 3
Пишу программу, пытаюсь сделать так, чтобы клетки были пронумерованы по вертикали от 8 до 1 и по горизонтали от a до h, но в консоль выводятся кракозябры. Как можно это исправить?
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
#include <iostream>
using namespace std;
 
enum Figures
{
    PAWN_WHITE = 'pw', ROOK_WHITE = 'Rw', KNIGHT_WHITE = 'Nw', BISHOP_WHITE = 'Bw', QUEEN_WHITE = 'Qw', KING_WHITE = 'Kw',
    PAWN_BLACK = 'pb', ROOK_BLACK = 'Rb', KNIGHT_BLACK = 'Nb', BISHOP_BLACK = 'Bb', QUEEN_BLACK = 'Qb', KING_BLACK = 'kb'
};
 
int main()
{
 
    setlocale(0, "");
    char board[9][9];
 
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
        {
            if (i < 2) board[i][j] = PAWN_WHITE;
            if (i > 5) board[i][j] = PAWN_BLACK;
            if (i > 1 && i < 6) board[i][j] = 1;
        }
    }
    
    board[0][1] = ROOK_WHITE;       board[0][0] = 8;
    board[0][2] = KNIGHT_WHITE;     board[1][0] = 7;
    board[0][3] = BISHOP_WHITE;     board[2][0] = 6;
    board[0][4] = QUEEN_WHITE;      board[3][0] = 5;
    board[0][5] = KING_WHITE;       board[4][0] = 4;
    board[0][6] = BISHOP_WHITE;     board[5][0] = 3;
    board[0][7] = KNIGHT_WHITE;     board[6][0] = 2;
    board[0][8] = ROOK_WHITE;       board[7][0] = 1;
    board[7][1] = ROOK_BLACK;       board[8][1] = 'a';
    board[7][2] = KNIGHT_BLACK;     board[8][2] = 'b';
    board[7][3] = BISHOP_BLACK;     board[8][3] = 'c';
    board[7][4] = QUEEN_BLACK;      board[8][4] = 'd';
    board[7][5] = KING_BLACK;       board[8][5] = 'e';
    board[7][6] = BISHOP_BLACK;     board[8][6] = 'f';
    board[7][7] = KNIGHT_BLACK;     board[8][7] = 'g';
    board[7][8] = ROOK_BLACK;       board[8][7] = 'h';
 
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            cout << "|_" << board[i][j] << "_|";
        }
        cout << "\n";
    }
    system("PAUSE");
    return 0;
}
0
596 / 288 / 178
Регистрация: 06.06.2016
Сообщений: 549
22.03.2021, 20:25 4
Лучший ответ Сообщение было отмечено Noob_03 как решение

Решение

Цитата Сообщение от Noob_03 Посмотреть сообщение
но в консоль выводятся кракозябры
А нечего путать char со строками

Цитата Сообщение от Noob_03 Посмотреть сообщение
Как можно это исправить?
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
#include <iostream>
#include <string>
 
using namespace std;
 
std::string
    PAWN_WHITE = "pw", ROOK_WHITE = "Rw", KNIGHT_WHITE = "Nw", BISHOP_WHITE = "Bw", QUEEN_WHITE = "Qw", KING_WHITE = "Kw",
    PAWN_BLACK = "pb", ROOK_BLACK = "Rb", KNIGHT_BLACK = "Nb", BISHOP_BLACK = "Bb", QUEEN_BLACK = "Qb", KING_BLACK = "kb";
 
 
int main()
{
 
    setlocale(0, "");
    string board[9][9];
 
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
        {
            if (i < 2) board[i][j] = PAWN_WHITE;
            if (i > 5) board[i][j] = PAWN_BLACK;
            if (i > 1 && i < 6) board[i][j] = "  ";
        }
    }
 
    board[0][1] = ROOK_WHITE;       board[0][0] = "8";
    board[0][2] = KNIGHT_WHITE;     board[1][0] = "7";
    board[0][3] = BISHOP_WHITE;     board[2][0] = "6";
    board[0][4] = QUEEN_WHITE;      board[3][0] = "5";
    board[0][5] = KING_WHITE;       board[4][0] = "4";
    board[0][6] = BISHOP_WHITE;     board[5][0] = "3";
    board[0][7] = KNIGHT_WHITE;     board[6][0] = "2";
    board[0][8] = ROOK_WHITE;       board[7][0] = "1";
    board[7][1] = ROOK_BLACK;       board[8][1] = "a";
    board[7][2] = KNIGHT_BLACK;     board[8][2] = "b";
    board[7][3] = BISHOP_BLACK;     board[8][3] = "c";
    board[7][4] = QUEEN_BLACK;      board[8][4] = "d";
    board[7][5] = KING_BLACK;       board[8][5] = "e";
    board[7][6] = BISHOP_BLACK;     board[8][6] = "f";
    board[7][7] = KNIGHT_BLACK;     board[8][7] = "g";
    board[7][8] = ROOK_BLACK;       board[8][7] = "h";
 
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            cout << "|" << board[i][j] << "|";
        }
        cout << "\n";
    }
    system("PAUSE");
    return 0;
}
1
1 / 1 / 0
Регистрация: 14.02.2021
Сообщений: 173
23.03.2021, 08:37  [ТС] 5
А можно сделать это вне массива? Просто решил попытаться, чтобы нумерация выводилась текстом, но выходит так, что нумерация съезжает ниже самого массива и исправить это не получается.
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
#include <iostream>
#include <string>
 
using namespace std;
 
std::string
PAWN_WHITE = "pw", ROOK_WHITE = "Rw", KNIGHT_WHITE = "Nw", BISHOP_WHITE = "Bw", QUEEN_WHITE = "Qw", KING_WHITE = "Kw",
PAWN_BLACK = "pb", ROOK_BLACK = "Rb", KNIGHT_BLACK = "Nb", BISHOP_BLACK = "Bb", QUEEN_BLACK = "Qb", KING_BLACK = "kb";
 
 
int main()
{
 
    setlocale(0, "");
    string board[8][8];
    char num = 'a';
 
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if (i < 2) board[i][j] = PAWN_WHITE;
            if (i > 5) board[i][j] = PAWN_BLACK;
            if (i > 1 && i < 6) board[i][j] = "  ";
        }
    }
    board[0][0] = ROOK_WHITE;
    board[0][1] = KNIGHT_WHITE;
    board[0][2] = BISHOP_WHITE;
    board[0][3] = QUEEN_WHITE;
    board[0][4] = KING_WHITE;
    board[0][5] = BISHOP_WHITE;
    board[0][6] = KNIGHT_WHITE;
    board[0][7] = ROOK_WHITE;
    board[7][0] = ROOK_BLACK;
    board[7][1] = KNIGHT_BLACK;
    board[7][2] = BISHOP_BLACK;
    board[7][3] = QUEEN_BLACK;
    board[7][4] = KING_BLACK;
    board[7][5] = BISHOP_BLACK;
    board[7][6] = KNIGHT_BLACK;
    board[7][7] = ROOK_BLACK;
 
    cout << "\t";
    for (int i = 0; i < 8; i++) 
    {
        for (int j = 0; j < 8; j++)
        {
            cout << "|" << board[i][j] << "|";
        }
        cout << "\n";
        cout << "\t";
    }
 
    for (int i = 0; i < 8; i++)
    {
        cout << " " << 8 - i;
        for (int j = 0; j < 8; j++)
 
        cout << endl;
    }
    cout << " ";
    for (int i = 0; i < 8; i++)
    {
        cout << "   " << num;
        ++num;
    }
    system("PAUSE");
    return 0;
}
Добавлено через 2 часа 22 минуты
Всё проблема решена
0
23.03.2021, 08:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2021, 08:37
Помогаю со студенческими работами здесь

Нарисовать шахматную доску на канве
Как сделать шахматную доску, с помощью канвы, на весь экран, под любое разрешение ?

Как нарисовать шахматную доску
Как нарисовать шахматную доску. Я нарисовал одну строчку, а как дальше с помощью циклов? uses...

Как в onPaint нарисовать шахматную доску?
Нужно нарисовать шахматную доску для шахмат, которая в будущем должна полностью функционировать под...

Нарисовать шахматную доску
1)создать программу ,когда рисуешь один прямоугольник и из него делаешь шахматную доску...

Нарисовать шахматную доску
Нужно с помощью цикла вайл и графического модуля создать &quot;шахматную доску&quot; (раскрасить их так)

Нарисовать шахматную доску
создать программу которая рисует шахматную доску


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

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