|  | @@ -8,17 +8,6 @@
 | 
	
		
			
				|  |  |  #include <utility>
 | 
	
		
			
				|  |  |  #include <stdexcept>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -std::ostream& operator <<(std::ostream& out, Chessboard& chess)
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | -    for (int i = 7; i >= 0; i--) {
 | 
	
		
			
				|  |  | -        for(int j = 0; j < 8; j++) {
 | 
	
		
			
				|  |  | -            out << chess.board[i][j];            
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        out << '\n';
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    return out;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  Cell Chessboard::get_cell(Position p)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      return get_icell(p.posNum-'0'-1, p.posSym-'A');
 | 
	
	
		
			
				|  | @@ -34,8 +23,6 @@ bool compare_by_angle(std::pair<int, int> pos1, std::pair<int, int> pos2)
 | 
	
		
			
				|  |  |  vector<Position> Chessboard::get_possible_moves(Figure* fig)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      vector<Position> moves = fig->get_moves();
 | 
	
		
			
				|  |  | -    // for(int i = 0; i < moves.size(); i++) std::cout << moves[i] << ';';
 | 
	
		
			
				|  |  | -    // std::cout << '\n';
 | 
	
		
			
				|  |  |      vector<std::pair<int, int>> grouped_moves;
 | 
	
		
			
				|  |  |      vector<Position> possible_moves;
 | 
	
		
			
				|  |  |      Position pos = fig->get_position();
 | 
	
	
		
			
				|  | @@ -44,9 +31,6 @@ vector<Position> Chessboard::get_possible_moves(Figure* fig)
 | 
	
		
			
				|  |  |      // Сортируем по углу и удалённости от фигуры
 | 
	
		
			
				|  |  |      sort(grouped_moves.begin(), grouped_moves.end(), compare_by_angle);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // for(int i = 0; i < grouped_moves.size(); i++) std::cout << char(grouped_moves[i].first+pos.posSym) << char(grouped_moves[i].second+pos.posNum) << ';';
 | 
	
		
			
				|  |  | -    // std::cout << '\n';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      bool blockedGroup = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      Figure* check_cell;
 | 
	
	
		
			
				|  | @@ -94,16 +78,6 @@ Chessboard::Chessboard(vector<Figure*> figures)
 | 
	
		
			
				|  |  |          p = figures[i]->get_position();
 | 
	
		
			
				|  |  |          board[p.posNum-'0'-1][p.posSym-'A'] = Cell(figures[i]);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // vector<Position> grouped_moves;
 | 
	
		
			
				|  |  | -    // for(int j = 0; j < figures.size(); j++) {
 | 
	
		
			
				|  |  | -    //     grouped_moves = get_possible_moves(figures[j]);
 | 
	
		
			
				|  |  | -    //     std::cout << figures[j]->print() << ' ';
 | 
	
		
			
				|  |  | -    //     for(int i = 0; i < grouped_moves.size(); i++) {
 | 
	
		
			
				|  |  | -    //         std::cout << grouped_moves[i] << ';';
 | 
	
		
			
				|  |  | -    //     }
 | 
	
		
			
				|  |  | -    //     std::cout << std::endl;
 | 
	
		
			
				|  |  | -    // }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void Chessboard::create_move(Position pos1, Position pos2)
 | 
	
	
		
			
				|  | @@ -117,6 +91,7 @@ void Chessboard::create_move(Position pos1, Position pos2)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      for(int i = 0; i < pos_moves.size(); i++) {
 | 
	
		
			
				|  |  |          if (pos_moves[i].posSym == pos2.posSym and pos_moves[i].posNum == pos2.posNum) {
 | 
	
		
			
				|  |  | +            fig->set_position(Position((char)pos2.posSym, pos2.posNum));
 | 
	
		
			
				|  |  |              board[pos2.posNum-'0'-1][pos2.posSym-'A'] = Cell(fig);
 | 
	
		
			
				|  |  |              board[pos1.posNum-'0'-1][pos1.posSym-'A'] = Cell();
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -130,4 +105,29 @@ Cell Chessboard::get_icell(int index, int jindex)
 | 
	
		
			
				|  |  |      if (not (index >= 0 and index < 8 and jindex >= 0 and jindex < 8))
 | 
	
		
			
				|  |  |          throw std::invalid_argument("Trying to get figure out of board");
 | 
	
		
			
				|  |  |      return board[index][jindex];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +std::ostream& operator <<(std::ostream& out, Chessboard& chess)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    vector<Figure*> figures;
 | 
	
		
			
				|  |  | +    for (int i = 7; i >= 0; i--) {
 | 
	
		
			
				|  |  | +        for(int j = 0; j < 8; j++) {
 | 
	
		
			
				|  |  | +            out << chess.board[i][j]; 
 | 
	
		
			
				|  |  | +            if (chess.board[i][j].get_figure() != nullptr) {
 | 
	
		
			
				|  |  | +                figures.push_back(chess.board[i][j].get_figure());
 | 
	
		
			
				|  |  | +            }           
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        out << '\n';
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // vector<Position> grouped_moves;
 | 
	
		
			
				|  |  | +    // for(int j = 0; j < figures.size(); j++) {
 | 
	
		
			
				|  |  | +    //     grouped_moves = chess.get_possible_moves(figures[j]);
 | 
	
		
			
				|  |  | +    //     std::cout << figures[j]->print() << ' ' << figures[j]->get_position().posSym << figures[j]->get_position().posNum << ' ';
 | 
	
		
			
				|  |  | +    //     for(int i = 0; i < grouped_moves.size(); i++) {
 | 
	
		
			
				|  |  | +    //         std::cout << grouped_moves[i] << ';';
 | 
	
		
			
				|  |  | +    //     }
 | 
	
		
			
				|  |  | +    //     std::cout << std::endl;
 | 
	
		
			
				|  |  | +    // }
 | 
	
		
			
				|  |  | +    return out;
 | 
	
		
			
				|  |  |  }
 |