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

Определить класс «Шахматная фигура» и производные классы «Ферзь» - C++

Восстановить пароль Регистрация
 
MasterD
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 5
17.01.2016, 13:37     Определить класс «Шахматная фигура» и производные классы «Ферзь» #1
Дело в том, что начал изучать ООП не так давно и тут попалась задачка, которая заинтересовала. Условие таково: "Определить класс «Шахматная фигура» и унаследовать от него классы, соответствующие шахматным фигурам «Ферзь», «Пешка», «Конь». Задать позицию и определить список фигур, которые может убить некоторая выбранная фигура." За любую оказанную помощь буду благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2016, 13:37     Определить класс «Шахматная фигура» и производные классы «Ферзь»
Посмотрите здесь:

C++ Определить базовый класс и на его основе производные классы
Класс: Создать производные классы StraightLine, Ellipse, Hyperbola C++
C++ Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями
C++ Используя производные классы, определить класс параметризованного списка одного из следующих типов. Применить его для построения списка объектов указа
Создать класс 4-угольник, заданный координатами вершин. Определить производные классы трапеция и треугольник C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
17.01.2016, 14:09     Определить класс «Шахматная фигура» и производные классы «Ферзь» #2
Вот писал когда-то рандомные шахматы. Тут все это есть, можете посмотреть.
antonboom
bmstu-team
 Аватар для antonboom
301 / 136 / 56
Регистрация: 10.01.2012
Сообщений: 419
Записей в блоге: 10
17.01.2016, 14:22     Определить класс «Шахматная фигура» и производные классы «Ферзь» #3
Задача тривиальная (это не шахматы, а просто тренировочный пример создания пары классов), можно поинтересоваться что именно смущает в ней?

Определяете главный абстрактный класс *Шахматная фигура*, содержащий общие для всех фигур поля и методы (например, позиция (int x, int y), тип фигуры (0 - Ферзь, 1 - Слон), массив типов фигур, которые он может убить, метод, который проверяет есть ли на его пути фигура с типом, которую он может убить и прочее).
В конструкторе, например, удобно сразу отдавать позицию.

Наследуете от него заданные фигуры и переопределяете, если есть необходимость нужным образом. (Например функция *хождения* (напр, void setPosition(x, y)), хоть она и не задана в задаче у всех своя).

В основной программе создаете массив фигурок, сразу передавая им их позиции. И играетесь, проверяя кто кого может кушать и прочее.
MasterD
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 5
17.01.2016, 14:42  [ТС]     Определить класс «Шахматная фигура» и производные классы «Ферзь» #4
antonboom, можете помочь с написанием?
antonboom
bmstu-team
 Аватар для antonboom
301 / 136 / 56
Регистрация: 10.01.2012
Сообщений: 419
Записей в блоге: 10
17.01.2016, 15:07     Определить класс «Шахматная фигура» и производные классы «Ферзь» #5
MasterD, при всем моем уважении, вы написали, что все-таки не так давно, но начали изучать ООП. Что именно конкретно вас смущает?) Мне казалось, я описал решение более менее доступно.

Быть может, вас интересует раздел фриланса?

Кликните здесь для просмотра всего текста
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
#include <iostream>
 
// Позиция
struct Pos {
    int x, y;
 
public:
    Pos() { };
    Pos(int xx, int yy): x(xx), y(yy) { }
};
 
// Шахматная фигура
class ChessFigure {
    Pos pos;
    int type;
 
public:
    virtual ~ChessFigure() { };
    ChessFigure() { };
    ChessFigure(Pos ppos, int ttype):
        pos(ppos), type(0) { };
    void printPos() {
        std::cout << "I'm in position " << pos.x << ", " << pos.y << std::endl;
    }
};
 
// Конь
class Horse: public ChessFigure {
public:
    Horse() { };
    Horse(Pos ppos): ChessFigure(ppos, 1) { } // Пусть тип "конь" будет равен 1 
};
 
// Основная программа
int main () {
    Horse h(Pos(1, 2));
 
    h.printPos();   // I'm in position 1, 2
 
    system("pause");
    return 0;
}
MasterD
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 5
17.01.2016, 15:21  [ТС]     Определить класс «Шахматная фигура» и производные классы «Ферзь» #6
Внимательно перечитал Ваш предыдущий ответ и все стало предельно понятно. Спасибо!
tezaurismosis
18.01.2016, 11:43     Определить класс «Шахматная фигура» и производные классы «Ферзь»
  #7
 Комментарий модератора 
Тема создана во фрилансе, эта теперь закрыта.
Yandex
Объявления
18.01.2016, 11:43     Определить класс «Шахматная фигура» и производные классы «Ферзь»
Закрытая тема Создать тему
Опции темы

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