Website Summary Files Commits Branches @commit @diff @stats
path: root / DiamondProblemAndPolymorphism / Chess / Queen.hpp
blob: 70c8e155eb15bb5413dd732458bdf63e521414ed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "Figure.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); //Ако не си успял като топ, пробвай като офицер.
}