#pragma once #include "tilePosition.h" #include "line.h" #include "types.h" #include #include #include #include class Field { private: std::mt19937 mt; Score score = 0; size_t FieldSize = 4; std::vector field; std::vector processLine(const std::vector &sourceLine, Score &score); Line getRow(size_t rowIndex) const; std::vector getColumn(size_t columnIndex) const; void setRow(size_t rowIndex, const std::vector &line); void setColumn(size_t columnIndex, const std::vector &line); void reset(); void setSize(size_t size); public: Field(size_t fieldSize); bool canMove() const; bool moveUp(); bool moveDown(); bool moveLeft(); bool moveRight(); std::vector getEmptyTiles() const; bool spawnTile(const std::vector &empty); void debug() const; };