diff --git a/src/Model/Game.hpp b/src/Model/Game.hpp index b7e0a60..fb09188 100644 --- a/src/Model/Game.hpp +++ b/src/Model/Game.hpp @@ -14,17 +14,17 @@ class Game { - private: - Grid * m_grid; - - public: - Game(); - ~Game(); - - void play(); - void pop(); - void showGrid(); - bool isOver(); + private: + Grid * m_grid; + + public: + Game(); + ~Game(); + + void play(); + void pop(); + void showGrid(); + bool isOver(); }; #endif diff --git a/src/Model/Grid.cpp b/src/Model/Grid.cpp index ca93955..87f294e 100644 --- a/src/Model/Grid.cpp +++ b/src/Model/Grid.cpp @@ -3,7 +3,7 @@ Grid::Grid(int size) { - m_size = size; + m_size = size; m_table = std::vector >(size); for(int i = 0 ; i < size ; i++) { @@ -39,118 +39,118 @@ void Grid::show() bool Grid::isEmpty(int i, int j) { - if (i >= 0 && i < m_size && j >= 0 && j < m_size) - return m_table[i][j]->isEmpty(); - - return false; + if (i >= 0 && i < m_size && j >= 0 && j < m_size) + return m_table[i][j]->isEmpty(); + + return false; } bool Grid::gridIsFull() { - bool isFull = true; - - for (int i = 0; i < m_size && isFull; i++) - { - for (int j = 0; j < m_size && isFull; j++) - { - if (m_table[i][j]->isEmpty()) - isFull = false; - } - } - - return isFull; + bool isFull = true; + + for (int i = 0; i < m_size && isFull; i++) + { + for (int j = 0; j < m_size && isFull; j++) + { + if (m_table[i][j]->isEmpty()) + isFull = false; + } + } + + return isFull; } void Grid::setCell(int i, int j, Cell *cell) { - if (i >= 0 && i < m_size && j >= 0 && j < m_size) - { - delete m_table[i][j]; - m_table[i][j] = cell; - } + if (i >= 0 && i < m_size && j >= 0 && j < m_size) + { + delete m_table[i][j]; + m_table[i][j] = cell; + } } void Grid::move(Direction direction) { - switch (direction) - { - case UP: - - break; - - case DOWN: - break; - - case LEFT: - break; - - case RIGHT: - break; - - default: - break; - } + switch (direction) + { + case UP: + + break; + + case DOWN: + break; + + case LEFT: + break; + + case RIGHT: + break; + + default: + break; + } } void Grid::moveDown() {/* for (int i = 0 ; i < m_size; i++) { - // If the column is full, check the next column - bool columnIsFull = true; - - for (int j = 0; j < m_size; j++) - { - if (m_table[j][i]->isEmpty()) - { - columnIsFull = false; - break; - } - } - - while (!columnIsFull) - { - // Calculate the first line to merge - int firstLine = m_size - 1; - while (m_table[firstLine][i]->isEmpty() && firstLine > 0) - firstLine--; - if (firstLine == 0) - break; - - // Calculate the second line to merge - int secondLine = firstLine - 1; - while (m_table[secondLine][i]->isEmpty() && secondLine > 0) - secondLine--; - - // If there is only one element, pull it down - if (m_table[secondLine][i]->isEmpty() && firstLine != m_size - 1) - { - Cell * originalCell = m_table[firstLine][i]; - Cell * finalCell = m_table[m_size-1][i]; - - m_table[firstLine][i] = finalCell; - m_table[m_size-1][i] = originalCell; - - break; - } - - // If there is only one element which is at the full bottom, break the loop - if (m_table[secondLine][i]->isEmpty()) - break; - - // If there are two "good" elements, begin the merge process - Cell * cell1 = m_table[firstLine][i]; - Cell * cell2 = m_table[secondLine][i]; - - Cell * mergedCell = NULL; - - // If the two cells are the same, merge them - if (cell1->equals(cell2)) - { - int value = std::stoi(cell1->getValue()); - mergedCell = new Cell(std::to_string(value)); - } - } - }*/ + // If the column is full, check the next column + bool columnIsFull = true; + + for (int j = 0; j < m_size; j++) + { + if (m_table[j][i]->isEmpty()) + { + columnIsFull = false; + break; + } + } + + while (!columnIsFull) + { + // Calculate the first line to merge + int firstLine = m_size - 1; + while (m_table[firstLine][i]->isEmpty() && firstLine > 0) + firstLine--; + if (firstLine == 0) + break; + + // Calculate the second line to merge + int secondLine = firstLine - 1; + while (m_table[secondLine][i]->isEmpty() && secondLine > 0) + secondLine--; + + // If there is only one element, pull it down + if (m_table[secondLine][i]->isEmpty() && firstLine != m_size - 1) + { + Cell * originalCell = m_table[firstLine][i]; + Cell * finalCell = m_table[m_size-1][i]; + + m_table[firstLine][i] = finalCell; + m_table[m_size-1][i] = originalCell; + + break; + } + + // If there is only one element which is at the full bottom, break the loop + if (m_table[secondLine][i]->isEmpty()) + break; + + // If there are two "good" elements, begin the merge process + Cell * cell1 = m_table[firstLine][i]; + Cell * cell2 = m_table[secondLine][i]; + + Cell * mergedCell = NULL; + + // If the two cells are the same, merge them + if (cell1->equals(cell2)) + { + int value = std::stoi(cell1->getValue()); + mergedCell = new Cell(std::to_string(value)); + } + } + }*/ }