all directions :frog_party:

This commit is contained in:
David Husicka 2021-11-24 10:05:59 +01:00
parent 5f50f58ce9
commit 38e0fce5ec
1 changed files with 63 additions and 17 deletions

80
2048.c
View File

@ -55,14 +55,29 @@ uint8_t game_move(Game *game, Direction direction) {
// make it so it can work with different directions
int directionality = b; // TODO: rename ugly name
if (direction == Down) {
directionality = a;
}
int movement = 1;
if (direction == Left || direction == Up) {
directionality = game->field_size_x - b - 1;
if(direction == Left) {
directionality = game->field_size_x - b - 1;
} else {
directionality = game->field_size_y - a - 1;
}
movement = -1;
}
if(field[a][directionality + movement] == 0) {
field[a][directionality+movement] = field[a][directionality];
field[a][directionality] = 0;
if(direction == Left || direction == Right) {
if(field[a][directionality + movement] == 0) {
field[a][directionality+movement] = field[a][directionality];
field[a][directionality] = 0;
}
} else {
if(field[directionality + movement][b] == 0) {
field[directionality + movement][b] = field[directionality][b];
field[directionality][b] = 0;
}
}
}
@ -74,16 +89,33 @@ uint8_t game_move(Game *game, Direction direction) {
a = j;
b = i;
}
int directionality = b;
int directionality = b; // TODO: rename ugly name
if (direction == Down) {
directionality = a;
}
int movement = 1;
if (direction == Left) {
directionality = game->field_size_x - b - 1;
if (direction == Left || direction == Up) {
if(direction == Left) {
directionality = game->field_size_x - b - 1;
} else {
directionality = game->field_size_y - a - 1;
}
movement = -1;
}
if(field[a][directionality + movement] == field[a][directionality]) {
field[a][directionality+movement] = field[a][directionality]*2;
field[a][directionality] = 0;
j++;
// TODO: fix 444 <- 48, should be 84
if (direction == Left || direction == Right) {
if(field[a][directionality + movement] == field[a][directionality]) {
field[a][directionality+movement] = field[a][directionality]*2;
field[a][directionality] = 0;
j++;
}
} else {
if(field[directionality + movement][b] == field[directionality][b]) {
field[directionality + movement][b] = field[directionality][b]*2;
field[directionality][b] = 0;
j++;
}
}
}
@ -95,15 +127,29 @@ uint8_t game_move(Game *game, Direction direction) {
a = j;
b = i;
}
int directionality = b;
int directionality = b; // TODO: rename ugly name
if (direction == Down) {
directionality = a;
}
int movement = 1;
if (direction == Left) {
directionality = game->field_size_x - b - 1;
if (direction == Left || direction == Up) {
if(direction == Left) {
directionality = game->field_size_x - b - 1;
} else {
directionality = game->field_size_y - a - 1;
}
movement = -1;
}
if(field[a][directionality + movement] == 0) {
field[a][directionality+movement] = field[a][directionality];
field[a][directionality] = 0;
if(direction == Left || direction == Right) {
if(field[a][directionality + movement] == 0) {
field[a][directionality+movement] = field[a][directionality];
field[a][directionality] = 0;
}
} else {
if(field[directionality + movement][b] == 0) {
field[directionality + movement][b] = field[directionality][b];
field[directionality][b] = 0;
}
}
}
}