From 112a0d344da9e66d20ee9ab5d488e59c5d52e6ad Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Thu, 9 Apr 2020 18:09:42 +0300 Subject: added new examples --- DiamondProblemAndPolymorphism/Chess/Board.hpp | 127 -------------------------- 1 file changed, 127 deletions(-) delete mode 100644 DiamondProblemAndPolymorphism/Chess/Board.hpp (limited to 'DiamondProblemAndPolymorphism/Chess/Board.hpp') diff --git a/DiamondProblemAndPolymorphism/Chess/Board.hpp b/DiamondProblemAndPolymorphism/Chess/Board.hpp deleted file mode 100644 index 9ea5b93..0000000 --- a/DiamondProblemAndPolymorphism/Chess/Board.hpp +++ /dev/null @@ -1,127 +0,0 @@ -#pragma once -#include "Figure.hpp" -#include "Knight.hpp" -#include "Queen.hpp" - -class Board -{ - Figure*** board; - -public: - Board(); - Board(const Board& other) = delete; - Board& operator=(const Board& other) = delete; - ~Board(); - bool isEmptySquare(int x, int y) const; - bool AddKnight(int x, int y, bool isWhite); - bool AddQueen(int x, int y, bool isWhite); - bool AddBishop(int x, int y, bool isWhite); - bool AddRook(int x, int y, bool isWhite); - - void Print(); - - bool MoveFigure(int xOld, int yOld, int xNew, int yNew); - -}; -Board::Board() -{ - board = new Figure**[8]; - for (int i = 0; i < 8; ++i) - board[i] = new Figure*[8]; - - for (int i = 0; i < 8; ++i) - { - for (int j = 0; j < 8; j++) - board[i][j] = nullptr; - } - -} - -Board::~Board() -{ - for (int i = 0; i < 8; ++i) - { - for (int j = 0; j < 8; ++j) - { - delete board[i][j]; - } - delete[] board[i]; - } - delete[] board; - -} -bool Board::isEmptySquare(int x, int y) const -{ - return board[x][y] == nullptr; -} - -bool Board::AddKnight(int x, int y, bool isWhite) -{ - if (!isValidCoord(x, y) || !isEmptySquare(x, y)) - return false; - board[x][y] = new Knight(x, y, isWhite); - return true; -} -bool Board::AddQueen(int x, int y, bool isWhite) -{ - if (!isValidCoord(x, y) || !isEmptySquare(x, y)) - return false; - board[x][y] = new Queen(x, y, isWhite); - return true; -} -bool Board::AddBishop(int x, int y, bool isWhite) -{ - if (!isValidCoord(x, y) || !isEmptySquare(x, y)) - return false; - board[x][y] = new Bishop(x, y, isWhite); - return true; -} -bool Board::AddRook(int x, int y, bool isWhite) -{ - if (!isValidCoord(x, y) || !isEmptySquare(x, y)) - return false; - board[x][y] = new Rook(x, y, isWhite); - return true; -} - -void Board::Print() -{ - for (int i = 0; i < 8; ++i) - { - for (int j = 0; j < 8; ++j) - { - if (!board[i][j]) - cout << '_'; - else - board[i][j]->Print(); - - } - cout << endl; - } - cout << endl; - cout << endl; -} - -bool Board::MoveFigure(int xOld, int yOld, int xNew, int yNew) -{ - if (isEmptySquare(xOld, yOld)) //Ако няма фигура, там от където искаме да преместим - return false; - - bool res = board[xOld][yOld]->Move(xNew, yNew); //провери дали фигурата може да се премести на съответната прозиция. - if (!res)// ако не -> лъжа(ходът е невъзможен) - return false; - - if (!isEmptySquare(xNew, yNew)) - { - if (board[xOld][yOld]->isWhite ^ board[xNew][yNew]->isWhite)// ако там седи фигура от различен цвят - delete board[xNew][yNew]; //взимаме я(трием обекта) - else //ако фигурата която седи на новата позиция е от СЪЩИЯ цвят - { - board[xOld][yOld]->Move(xOld, yOld); //връщаме обратно кординатите новата фигура. Тук би възникнал проблем, ако имаме фигурата пешка. - //Това е така, понеже тя няма да може да се върне назад, ако вече е преместена. - return false; //За това примерно решение е, да се направи функция goBackwards. - } - } - board[xNew][yNew] = board[xOld][yOld]; - board[xOld][yOld] = nullptr; -} \ No newline at end of file -- cgit v1.3.1-23-gd82d