Как можно создать программу на C++, которая визуализирует шахматную доску с ферзем, показывая его позицию и клетки, которые он атакует?
Информатика 8 класс Программирование на C++ создание программы на C++ визуализация шахматной доски позиция ферзя атака ферзя программирование на C++ шахматы в программировании графика в C++
Создание программы на C++, которая визуализирует шахматную доску с ферзем и показывает его позицию и клетки, которые он атакует, можно разбить на несколько шагов. Давайте рассмотрим, как это сделать.
Шаг 1: Определение размеров шахматной доскиШахматная доска состоит из 8x8 клеток. Мы можем использовать двумерный массив для представления доски.
Шаг 2: Ввод позиции ферзяПользователь должен ввести координаты ферзя. Обычно координаты указываются в виде пары (x, y), где x - это столбец (от 1 до 8), а y - это строка (от 1 до 8).
Шаг 3: Определение атакуемых клетокФерзь атакует клетки по вертикали, горизонтали и диагоналям. Необходимо создать функцию, которая будет определять все клетки, которые атакует ферзь, исходя из его позиции.
Шаг 4: Визуализация доскиПосле определения позиций ферзя и атакуемых клеток, мы можем визуализировать шахматную доску в консоли.
Шаг 5: Реализация программыТеперь давайте соберем все шаги вместе и напишем код.
#include <iostream>
#include <vector>
using namespace std;
void printBoard(int queenX, int queenY) {
    vector<vector<char>> board(8, vector<char>(8, '.'));
    // Устанавливаем ферзя
    board[queenY - 1][queenX - 1] = 'Q';
    // Обозначаем атакуемые клетки
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            if (i == queenY - 1 || j == queenX - 1 || abs(i - (queenY - 1)) == abs(j - (queenX - 1))) {
                if (board[i][j] != 'Q') {
                    board[i][j] = '*';
                }
            }
        }
    }
    // Выводим шахматную доску
    for (int i = 7; i >= 0; i--) {
        for (int j = 0; j < 8; j++) {
            cout << board[i][j] << ' ';
        }
        cout << endl;
    }
}
int main() {
    int queenX, queenY;
    cout << "Введите координаты ферзя (x y): ";
    cin >> queenX >> queenY;
    // Проверяем корректность введенных данных
    if (queenX >= 1 && queenX <= 8 && queenY >= 1 && queenY <= 8) {
        printBoard(queenX, queenY);
    } else {
        cout << "Некорректные координаты. Введите значения от 1 до 8." << endl;
    }
    return 0;
}
Объяснение кода:
Теперь, когда вы запустите программу, она попросит вас ввести координаты ферзя и выведет шахматную доску с его позицией и клетками, которые он атакует.