This commit is contained in:
2026-05-28 15:20:32 +03:00
parent d596438a94
commit 4d881b1087
4 changed files with 18 additions and 21 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ public:
void updateScore(); void updateScore();
Score getScore(); Score getScore();
bool canMove() const; bool hasMoves() const;
bool move(Direction direction); bool move(Direction direction);
std::vector<Position> getEmptyTiles() const; std::vector<Position> getEmptyTiles() const;
+5 -5
View File
@@ -14,24 +14,24 @@ int main() {
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
while (canMove) { while (field.hasMoves()) {
field.debug(); field.debug();
std::cin >> action; std::cin >> action;
switch (action) { switch (action) {
case 'w': case 'w':
canMove = field.move(Direction::up); field.move(Direction::up);
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
break; break;
case 's': case 's':
canMove = field.move(Direction::down); field.move(Direction::down);
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
break; break;
case 'a': case 'a':
canMove = field.move(Direction::left); field.move(Direction::left);
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
break; break;
case 'd': case 'd':
canMove = field.move(Direction::right); field.move(Direction::right);
field.spawnTile(field.getEmptyTiles()); field.spawnTile(field.getEmptyTiles());
break; break;
default: default:
+10 -7
View File
@@ -39,7 +39,7 @@ Field::Field(size_t fieldSize) : mt(std::random_device{}()), FieldSize(fieldSize
void Field::updateScore() { void Field::updateScore() {
for (size_t i = 0; i < this->FieldSize; ++i) { for (size_t i = 0; i < this->FieldSize; ++i) {
this->score += this->field[i].score; this->score = this->field[i].score;
} }
} }
@@ -47,18 +47,21 @@ Score Field::getScore() {
return this->score; return this->score;
} }
bool Field::canMove() const { bool Field::hasMoves() const {
if (!this->getEmptyTiles().empty()) { if (!this->getEmptyTiles().empty()) {
return true; return true;
} }
for (int x = 0; x < this->field.size(); ++x) { for (size_t x = 0; x < this->field.size(); ++x) {
for (int y = 0; y < this->field.size(); ++y) { for (size_t y = 0; y < this->field.size(); ++y) {
// TODO: implement if (this->field[x][y] == this->field[x + 1][y] ||
// if (x + 1 < ) this->field[x][y] == this->field[x][y + 1] ) {
return true;
} }
} }
} }
return false;
}
bool Field::move(Direction direction) { bool Field::move(Direction direction) {
auto oldField = this->field; auto oldField = this->field;
@@ -132,7 +135,7 @@ bool Field::spawnTile(const std::vector<Position> &empty) {
void Field::debug() const { void Field::debug() const {
for (size_t i = 0; i < this->FieldSize; ++i) { for (size_t i = 0; i < this->FieldSize; ++i) {
for (size_t j = 0; j < this->FieldSize; ++j) { for (size_t j = 0; j < this->FieldSize; ++j) {
printf("%5llu ", this->field[i][j]); printf("%3llu ", this->field[i][j]);
} }
printf("\n"); printf("\n");
} }
+2 -8
View File
@@ -1,14 +1,8 @@
#include "line.h" #include "line.h"
Line::Line() { Line::Line() = default;
this->line.clear();
this->line.resize(0);
}
Line::Line(size_t length) { Line::Line(size_t length) : line(length) {}
this->line.clear();
this->line.resize(length);
}
void Line::process() { void Line::process() {
std::vector<Tile> result; std::vector<Tile> result;