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
|
#pragma once
#include "Figure.hpp"
#include "Bishop.hpp"
#include "Rook.hpp"
class Queen : public Bishop, public Rook //Формално това НЕ Е ок. Понеже царицата НЕ Е топ и царицата НЕ Е офицер.
{
public:
Queen(int xCoordinate, int yCoordinate, bool isWhite) :Figure(xCoordinate, yCoordinate, isWhite), Bishop(xCoordinate, yCoordinate, isWhite), Rook(xCoordinate, yCoordinate, isWhite)
{}
bool Move(int xNew, int yNew);
void Print();
};
void Queen::Print()
{
cout << 'Q';
}
bool Queen::Move(int xNew, int yNew) // Тук сме наследили 2 функционалности. Имаме конфликт, трябва да дефинираме наша(използвайки предишните, ако искаме)
{
bool res = Rook::Move(xNew, yNew);//Пробвай да се движиш като топ(по права линия)
if (res) //Ако е успял - вс е ок
return true;
return Bishop::Move(xNew, yNew); //Ако не си успял като топ, пробвай като офицер.
}
|