aboutsummaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-03-18 21:36:21 +0100
committerCharles <sircharlesaze@gmail.com>2020-03-18 21:36:21 +0100
commitcae4150779c587edcc40b75f04624ab3971bbed6 (patch)
treed4d8a749ddcd7fdedc1cb5d3b9265e5df196f9f3 /src/game.cpp
parent79ab0bdeedd6e7f97b4c246b4319af5eac545061 (diff)
download2048-cae4150779c587edcc40b75f04624ab3971bbed6.tar.gz
2048-cae4150779c587edcc40b75f04624ab3971bbed6.tar.bz2
2048-cae4150779c587edcc40b75f04624ab3971bbed6.zip
random spawn
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 11a603b..5bd3763 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -25,3 +25,76 @@ int Game::at(int x, int y)
{
return grid[y][x];
}
+
+void Game::move(Direction direction)
+{
+ switch (direction)
+ {
+ case DIRECTION_LEFT:
+ break;
+ case DIRECTION_RIGHT:
+ // for (int i = 0; i < size; i++)
+ // for (int j = size - 2; j >= 0; j--)
+ // {
+ // if (grid[i][j + 1] == grid[i][j])
+ // {
+ // grid[i][j + 1] *= 2;
+ // for (int k = j; k >= 0; k--)
+ // grid[i][k] = grid[i][k - 1];
+ // grid[i][shifts] = 0;
+ // shifts++;
+ // }
+ // }
+ break;
+ case DIRECTION_DOWN:
+ break;
+ case DIRECTION_UP:
+ // for (int i = size - 2; i >= 0; i--)
+ // for (int j = 0; j < size; j++)
+ // {
+ // if (grid[i + 1][j] == grid[i][j])
+ // {
+ // grid[i + 1][j 1] *= 2;
+ // for (int k = j; k >= 0; k--)
+ // grid[i][k] = grid[i][k - 1];
+ // grid[i][shifts] = 0;
+ // shifts++;
+ // }
+ // }
+ break;
+ }
+ spawn();
+}
+
+void Game::spawn()
+{
+ int i;
+ int j;
+
+ do
+ {
+ i = rand() % size;
+ j = rand() % size;
+ }
+ while (grid[i][j] != 0);
+ grid[i][j] = 2;
+}
+
+bool Game::lost()
+{
+ for (int i = 0; i < size; i++)
+ for (int j = 0; j < size; j++)
+ {
+ if (grid[i][j] == 0)
+ return false;
+ if (i - 1 >= 0 && grid[i - 1][j] == grid[i][j])
+ return false;
+ if (i + 1 < size && grid[i + 1][j] == grid[i][j])
+ return false;
+ if (j - 1 >= 0 && grid[i][j - 1] == grid[i][j])
+ return false;
+ if (j + 1 < size && grid[i][j + 1] == grid[i][j])
+ return false;
+ }
+ return true;
+}