From 680ef59e67faa3739723c66147b9536e20d55671 Mon Sep 17 00:00:00 2001 From: German Mikheev Date: Sun, 24 May 2026 17:47:19 +0300 Subject: [PATCH] fixed main logic --- include/line.h | 2 +- main.cpp | 3 +++ source/field.cpp | 15 +++++++-------- source/line.cpp | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/include/line.h b/include/line.h index f60ee74..08de56f 100644 --- a/include/line.h +++ b/include/line.h @@ -4,7 +4,7 @@ struct Line { std::vector line; - Score score; + Score score = 0; explicit Line(); Line(size_t length); diff --git a/main.cpp b/main.cpp index e19367f..aa2a9e4 100755 --- a/main.cpp +++ b/main.cpp @@ -10,6 +10,9 @@ int main() { Field field(4); char action; + field.spawnTile(field.getEmptyTiles()); + field.spawnTile(field.getEmptyTiles()); + while (true) { field.debug(); std::cin >> action; diff --git a/source/field.cpp b/source/field.cpp index c486023..5430bdd 100755 --- a/source/field.cpp +++ b/source/field.cpp @@ -13,10 +13,7 @@ Private methods: void setColumn(size_t idx); Public methods: - void moveUp(); - void moveDown(); - void moveLeft(); - void moveRight(); + bool move(Direction direction); */ // PRIVATE @@ -26,9 +23,9 @@ Line Field::getRow(size_t rowIndex) const { Line Field::getColumn(size_t columnIndex) const { // from top to bottom - Line column; + Line column(this->FieldSize); for (size_t i = 0; i < this->FieldSize; ++i) { - column.push_back(this->field[i][columnIndex]); + column[i] = this->field[i][columnIndex]; } return column; } @@ -65,8 +62,8 @@ void printVector(const Line &arr) { bool Field::move(Direction direction) { auto oldField = this->field; - Line column; - Line row; + Line column(this->FieldSize); + Line row(this->FieldSize); switch (direction) { case Direction::up: @@ -91,6 +88,7 @@ bool Field::move(Direction direction) { row.process(); setRow(i, row); } + break; case Direction::right: for (size_t i = 0; i < this->FieldSize; ++i) { row = getRow(i); @@ -99,6 +97,7 @@ bool Field::move(Direction direction) { std::reverse(row.begin(), row.end()); setRow(i, row); } + break; default: throw std::exception(); } diff --git a/source/line.cpp b/source/line.cpp index 3aa1882..5c58619 100644 --- a/source/line.cpp +++ b/source/line.cpp @@ -8,7 +8,7 @@ Fields: Line::Line() { this->line.clear(); - this->line.resize(4); + this->line.resize(0); } Line::Line(size_t length) {