|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.07.2022, 00:28 | #1 |
Пользователь
Регистрация: 08.07.2022
Сообщений: 29
|
Класс "Шахматы" C++
Тип «Позиция на шахматной доске» определить как класс, содержащий:
- закрытые поля с координатами точки, значения которых будут соответствовать нумерации шахматного поля; - все функции реализовать в соответствии с общими требованиями. Тип «Фигура» определить как класс, содержащий: - закрытые поля с позицией на шахматной доске соответствующего типа и реализовано в виде символьной строки произвольной длины поле с названием цвета; - предусмотреть функцию "ход" на одну позицию в одном из четырех направлений; - остальные функции реализовать соответственно общим требованиям. В тестовом примере создать объекты типа «Фигура» соответственно общим требованиям и вывести информацию о них в полном и сокращенном виде. |
08.07.2022, 01:08 | #2 |
Пользователь
Регистрация: 08.07.2022
Сообщений: 29
|
Проблема с классом Queen
Код:
Последний раз редактировалось BDA; 08.07.2022 в 04:05. |
08.07.2022, 01:30 | #3 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Код:
|
08.07.2022, 03:44 | #4 |
Пользователь
Регистрация: 08.07.2022
Сообщений: 29
|
macomics,
Queen::Turn (использование полного имени в объявлении члена не допускается) И в main тоже есть проблемы |
08.07.2022, 08:56 | #5 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,016
|
не вижу смысла делать виртуальное наследование (то есть, сильно усложнять всю систему) всего лишь из-за того, что ферзь сочетает ходы ладьи и слона. Убираем всю эту мишуру и просто прописываем ферзю свою ходилку
--- эту пару надлежит объединить в класс и прописать операторы и методы. Будет меньше лапши ------ енум нужно облагородить Последний раз редактировалось Алексей1153; 08.07.2022 в 09:01. |
08.07.2022, 09:48 | #6 | |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Цитата:
Зачем вообще так усложнять. Вы тут пытаетесь изобрести пятиколесный вертолет без пропеллера. Для шахмат достаточно хранить массив в 64 байта. 1 бит описывает цвет клетки (0 - белая, 16 - черная), 1 бит описывает цвет фигуры (0 - белая, 8 - черная) и 3 бита описывают тип фигуры (0 - нет, 1 - пешка, 2 - слон, 3 - кобыла, 4 - офицер, 5 - ферзь и 6 - король). Даже остается 3 бита на всякие дополнительные фишки вроде выделения фигуры, подсветки клеток для возможного хода выделенной фигуры или индикатор перетаскивания фигуры. Городить забор из классов - пустая трата памяти и времени. |
|
08.07.2022, 17:18 | #7 |
Пользователь
Регистрация: 08.07.2022
Сообщений: 29
|
А не могли б вы подправить мне код? Я попытался его изменить как вы сказали. У меня не выходит получить решение(
|
11.07.2022, 18:12 | #8 |
Пользователь
Регистрация: 08.07.2022
Сообщений: 29
|
Проблема в main подчеркнута
#define _USE_MATH_DEFINES #include <iostream> #include <iomanip> #include <cmath> # using namespace std; enum class coord { a, b, c, d, e, f, g, h }; enum class color { black, white }; class Figure { protected: coord letter; //a..h int number; //1..8 color colour; //цвет public: Figure(coord x, int y, color z) { letter = x; number = y; colour = z; } }; class Castle : public Figure { public: int Turn(coord new_letter,int new_number,color) { if (((new_letter == letter) && (new_number != number)) || ((new_letter != letter) && (new_number == number))) { letter = new_letter; number = new_number; return 1; } else return 0; } }; class Bishop : public Figure { public: int Turn(coord new_letter,int new_number,color) { if ((abs((new_letter == letter) == abs(new_number != number)) && (new_letter != letter))) { letter = new_letter; number = new_number; return 1; } else return 0; } }; class Queen: public Figure { public: int Turn(coord new_letter, int new_number,color) { if ((letter != new_letter || number != new_number) && (new_letter == letter || new_number == number || abs(new_letter == letter) == abs(new_number - number))) { letter = new_letter; number = new_number; return 1; } else return 0; } }; int main() { Queen q(coord::e, 5,color::white);// в этой строчке проблема q.Turn(coord::h, 8, color::white); return 0; }; |
11.07.2022, 19:44 | #9 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,016
|
Darklight, конструктор нужно прокинуть
Код:
|
11.07.2022, 20:27 | #10 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,016
|
координату завернул в класс
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" | billiejean78 | JavaScript, Ajax | 1 | 03.09.2021 08:58 |
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" | Бахтиёр1916 | Windows | 1 | 05.04.2017 12:53 |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" | link90 | Общие вопросы C/C++ | 2 | 27.03.2016 12:34 |
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") | funnyy | Помощь студентам | 3 | 17.10.2012 17:40 |