From 50444e86ea5048e05b8eb74055e0f7c4d2c5d7b7 Mon Sep 17 00:00:00 2001 From: angeld55 Date: Thu, 10 Jun 2021 18:54:25 +0300 Subject: sem 15 --- Sem. 15/Chess/ChessBoard/ChessBoard.cpp | 46 +++++++++++++++++++++++++++++++++ Sem. 15/Chess/ChessBoard/ChessBoard.h | 40 ++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 Sem. 15/Chess/ChessBoard/ChessBoard.cpp create mode 100644 Sem. 15/Chess/ChessBoard/ChessBoard.h (limited to 'Sem. 15/Chess/ChessBoard') diff --git a/Sem. 15/Chess/ChessBoard/ChessBoard.cpp b/Sem. 15/Chess/ChessBoard/ChessBoard.cpp new file mode 100644 index 0000000..dc809cc --- /dev/null +++ b/Sem. 15/Chess/ChessBoard/ChessBoard.cpp @@ -0,0 +1,46 @@ +#include "ChessBoard.h" +#include "../FigureFactory/FigureFactory.h" + +ChessBoard::ChessBoard() +{ + FigureFactory factory; + for (int i = 0; i < BOARD_SIZE; i++) + { + board[1][i].f = factory.createPawn(false); + board[6][i].f = factory.createPawn(true); + } + + board[0][0].f = factory.createRook(false); + board[0][7].f = factory.createRook(false); + + board[7][0].f = factory.createRook(true); + board[7][7].f = factory.createRook(true); + + + board[0][1].f = factory.createKnight(false); + board[0][6].f = factory.createKnight(false); + board[7][1].f = factory.createKnight(true); + board[7][6].f = factory.createKnight(true); + + board[0][2].f = factory.createBishop(false); + board[0][5].f = factory.createBishop(false); + board[7][2].f = factory.createBishop(true); + board[7][5].f = factory.createBishop(true); + + board[0][3].f = factory.createKnig(false); + board[0][4].f = factory.createQueen(false); + board[7][4].f = factory.createQueen(true); + board[7][3].f = factory.createKnig(true); +} + +void ChessBoard::print() const +{ + for (int i = 0; i < BOARD_SIZE; i++) + { + for (int j = 0; j < BOARD_SIZE; j++) + { + board[i][j].print(); + } + std::cout << std::endl; + } +} \ No newline at end of file diff --git a/Sem. 15/Chess/ChessBoard/ChessBoard.h b/Sem. 15/Chess/ChessBoard/ChessBoard.h new file mode 100644 index 0000000..1825119 --- /dev/null +++ b/Sem. 15/Chess/ChessBoard/ChessBoard.h @@ -0,0 +1,40 @@ +#pragma once +#include "../Figures/FigureBase/Figure.h" + +const size_t BOARD_SIZE = 8; +class ChessBoard +{ + struct Cell + { + Figure* f = nullptr; + Cell() = default; + + Cell(const Cell& other) = delete; + Cell& operator=(const Cell& other) = delete; + bool isEmpty() + { + return f == nullptr; + } + + void print() const + { + if (f != nullptr) + f->print(); + else + std::cout << ' '; + } + + ~Cell() + { + delete f; + } + }; + Cell board[BOARD_SIZE][BOARD_SIZE]; + +public: + ChessBoard(); + ChessBoard(const ChessBoard& other) = delete; + ChessBoard& operator=(const ChessBoard&) = delete; + + void print() const; +}; \ No newline at end of file -- cgit v1.3.1-23-gd82d