Website Summary Files Commits Branches @commit @diff @stats
path: root / DiamondProblemAndPolymorphism / Chess / Knight.hpp
diff options
context:
space:
mode:
1 files changed, 37 insertions, 0 deletions
-rw-r--r--DiamondProblemAndPolymorphism/Chess/Knight.hpp37
diff --git a/DiamondProblemAndPolymorphism/Chess/Knight.hpp b/DiamondProblemAndPolymorphism/Chess/Knight.hpp
new file mode 100644
index 0000000..eb2ee9f
--- /dev/null
+++ b/DiamondProblemAndPolymorphism/Chess/Knight.hpp
@@ -0,0 +1,37 @@
+#include "Figure.hpp"
+
+class Knight : public Figure
+{
+public:
+ Knight(int xCoordinate, int yCoordinate, bool isWhite) :Figure(xCoordinate, yCoordinate, isWhite)
+ {}
+
+ bool Move(int xNew, int yNew);
+
+ void Print();
+};
+bool Knight::Move(int xNew, int yNew)
+{
+ if (!isValidCoord(xNew, yNew))
+ return false;
+ int possibleX[] = { 1, 1, -1, -1, 2, 2, -2, -2 };
+ int possibleY[] = { 2, -2, 2, -2, 1, -1, 1, -1 };
+ for (int i = 0; i < 8; ++i)
+ {
+ if (xNew == xCoord + possibleX[i]
+ && yNew == yCoord + possibleY[i])
+ {
+ xCoord = xNew;
+ yCoord = yNew;
+ return true;
+ }
+
+ }
+ return false;
+
+}
+
+void Knight::Print()
+{
+ cout << 'K';
+} \ No newline at end of file