Как можно создать программу на 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; }
Объяснение кода:
Теперь, когда вы запустите программу, она попросит вас ввести координаты ферзя и выведет шахматную доску с его позицией и клетками, которые он атакует.