fixed main logic
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
struct Line {
|
struct Line {
|
||||||
std::vector<Tile> line;
|
std::vector<Tile> line;
|
||||||
Score score;
|
Score score = 0;
|
||||||
|
|
||||||
explicit Line();
|
explicit Line();
|
||||||
Line(size_t length);
|
Line(size_t length);
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ int main() {
|
|||||||
Field field(4);
|
Field field(4);
|
||||||
char action;
|
char action;
|
||||||
|
|
||||||
|
field.spawnTile(field.getEmptyTiles());
|
||||||
|
field.spawnTile(field.getEmptyTiles());
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
field.debug();
|
field.debug();
|
||||||
std::cin >> action;
|
std::cin >> action;
|
||||||
|
|||||||
+7
-8
@@ -13,10 +13,7 @@ Private methods:
|
|||||||
void setColumn(size_t idx);
|
void setColumn(size_t idx);
|
||||||
|
|
||||||
Public methods:
|
Public methods:
|
||||||
void moveUp();
|
bool move(Direction direction);
|
||||||
void moveDown();
|
|
||||||
void moveLeft();
|
|
||||||
void moveRight();
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// PRIVATE
|
// PRIVATE
|
||||||
@@ -26,9 +23,9 @@ Line Field::getRow(size_t rowIndex) const {
|
|||||||
|
|
||||||
Line Field::getColumn(size_t columnIndex) const {
|
Line Field::getColumn(size_t columnIndex) const {
|
||||||
// from top to bottom
|
// from top to bottom
|
||||||
Line column;
|
Line column(this->FieldSize);
|
||||||
for (size_t i = 0; i < this->FieldSize; ++i) {
|
for (size_t i = 0; i < this->FieldSize; ++i) {
|
||||||
column.push_back(this->field[i][columnIndex]);
|
column[i] = this->field[i][columnIndex];
|
||||||
}
|
}
|
||||||
return column;
|
return column;
|
||||||
}
|
}
|
||||||
@@ -65,8 +62,8 @@ void printVector(const Line &arr) {
|
|||||||
|
|
||||||
bool Field::move(Direction direction) {
|
bool Field::move(Direction direction) {
|
||||||
auto oldField = this->field;
|
auto oldField = this->field;
|
||||||
Line column;
|
Line column(this->FieldSize);
|
||||||
Line row;
|
Line row(this->FieldSize);
|
||||||
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case Direction::up:
|
case Direction::up:
|
||||||
@@ -91,6 +88,7 @@ bool Field::move(Direction direction) {
|
|||||||
row.process();
|
row.process();
|
||||||
setRow(i, row);
|
setRow(i, row);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case Direction::right:
|
case Direction::right:
|
||||||
for (size_t i = 0; i < this->FieldSize; ++i) {
|
for (size_t i = 0; i < this->FieldSize; ++i) {
|
||||||
row = getRow(i);
|
row = getRow(i);
|
||||||
@@ -99,6 +97,7 @@ bool Field::move(Direction direction) {
|
|||||||
std::reverse(row.begin(), row.end());
|
std::reverse(row.begin(), row.end());
|
||||||
setRow(i, row);
|
setRow(i, row);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ Fields:
|
|||||||
|
|
||||||
Line::Line() {
|
Line::Line() {
|
||||||
this->line.clear();
|
this->line.clear();
|
||||||
this->line.resize(4);
|
this->line.resize(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Line::Line(size_t length) {
|
Line::Line(size_t length) {
|
||||||
|
|||||||
Reference in New Issue
Block a user