#pragma once extern "C" { #include } #include #include #include #include "Tetromino.hpp" #include "Sound.hpp" class GameBoard { private: void spawnNewTetromino( ); bool checkCollision(const Tetromino& tetromino) const; void lockTetromino( ); void clearLines( ); vector> lockedTetrominos; vector> lockedColors; shared_ptr currentTetromino; shared_ptr nextTetromino; const int width = 10; const int height = 20; bool collision; int score; int level; int lines; const unique_ptr sound; public: GameBoard( ); void update( ); bool tryMoveCurrentTetromino(int dx, int dy); bool tryRotateCurrentTetromino( ); bool isValidPosition(const vector>& shape, int x, int y) const; bool moveToBottom( ); const bool isCollision( ) const; const int getScore( ) const; const int getLevel( ) const; const int getLines( ) const; const shared_ptr getNextTetromino( ) const; const vector>& getLockedTetrominos( ) const; const vector>& getLockedColors( ) const; const shared_ptr getCurrentTetromino( ) const; const int getWidth( ) const; const int getHeight( ) const; };