all directions :frog_party:
This commit is contained in:
parent
5f50f58ce9
commit
38e0fce5ec
54
2048.c
54
2048.c
|
@ -55,15 +55,30 @@ uint8_t game_move(Game *game, Direction direction) {
|
||||||
|
|
||||||
// make it so it can work with different directions
|
// make it so it can work with different directions
|
||||||
int directionality = b; // TODO: rename ugly name
|
int directionality = b; // TODO: rename ugly name
|
||||||
|
if (direction == Down) {
|
||||||
|
directionality = a;
|
||||||
|
}
|
||||||
int movement = 1;
|
int movement = 1;
|
||||||
if (direction == Left || direction == Up) {
|
if (direction == Left || direction == Up) {
|
||||||
|
if(direction == Left) {
|
||||||
directionality = game->field_size_x - b - 1;
|
directionality = game->field_size_x - b - 1;
|
||||||
|
} else {
|
||||||
|
directionality = game->field_size_y - a - 1;
|
||||||
|
}
|
||||||
movement = -1;
|
movement = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(direction == Left || direction == Right) {
|
||||||
if(field[a][directionality + movement] == 0) {
|
if(field[a][directionality + movement] == 0) {
|
||||||
field[a][directionality+movement] = field[a][directionality];
|
field[a][directionality+movement] = field[a][directionality];
|
||||||
field[a][directionality] = 0;
|
field[a][directionality] = 0;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if(field[directionality + movement][b] == 0) {
|
||||||
|
field[directionality + movement][b] = field[directionality][b];
|
||||||
|
field[directionality][b] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// combine same numbers
|
// combine same numbers
|
||||||
|
@ -74,17 +89,34 @@ uint8_t game_move(Game *game, Direction direction) {
|
||||||
a = j;
|
a = j;
|
||||||
b = i;
|
b = i;
|
||||||
}
|
}
|
||||||
int directionality = b;
|
int directionality = b; // TODO: rename ugly name
|
||||||
|
if (direction == Down) {
|
||||||
|
directionality = a;
|
||||||
|
|
||||||
|
}
|
||||||
int movement = 1;
|
int movement = 1;
|
||||||
if (direction == Left) {
|
if (direction == Left || direction == Up) {
|
||||||
|
if(direction == Left) {
|
||||||
directionality = game->field_size_x - b - 1;
|
directionality = game->field_size_x - b - 1;
|
||||||
|
} else {
|
||||||
|
directionality = game->field_size_y - a - 1;
|
||||||
|
}
|
||||||
movement = -1;
|
movement = -1;
|
||||||
}
|
}
|
||||||
|
// TODO: fix 444 <- 48, should be 84
|
||||||
|
if (direction == Left || direction == Right) {
|
||||||
if(field[a][directionality + movement] == field[a][directionality]) {
|
if(field[a][directionality + movement] == field[a][directionality]) {
|
||||||
field[a][directionality+movement] = field[a][directionality]*2;
|
field[a][directionality+movement] = field[a][directionality]*2;
|
||||||
field[a][directionality] = 0;
|
field[a][directionality] = 0;
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if(field[directionality + movement][b] == field[directionality][b]) {
|
||||||
|
field[directionality + movement][b] = field[directionality][b]*2;
|
||||||
|
field[directionality][b] = 0;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// move everything again
|
// move everything again
|
||||||
|
@ -95,16 +127,30 @@ uint8_t game_move(Game *game, Direction direction) {
|
||||||
a = j;
|
a = j;
|
||||||
b = i;
|
b = i;
|
||||||
}
|
}
|
||||||
int directionality = b;
|
int directionality = b; // TODO: rename ugly name
|
||||||
|
if (direction == Down) {
|
||||||
|
directionality = a;
|
||||||
|
}
|
||||||
int movement = 1;
|
int movement = 1;
|
||||||
if (direction == Left) {
|
if (direction == Left || direction == Up) {
|
||||||
|
if(direction == Left) {
|
||||||
directionality = game->field_size_x - b - 1;
|
directionality = game->field_size_x - b - 1;
|
||||||
|
} else {
|
||||||
|
directionality = game->field_size_y - a - 1;
|
||||||
|
}
|
||||||
movement = -1;
|
movement = -1;
|
||||||
}
|
}
|
||||||
|
if(direction == Left || direction == Right) {
|
||||||
if(field[a][directionality + movement] == 0) {
|
if(field[a][directionality + movement] == 0) {
|
||||||
field[a][directionality+movement] = field[a][directionality];
|
field[a][directionality+movement] = field[a][directionality];
|
||||||
field[a][directionality] = 0;
|
field[a][directionality] = 0;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if(field[directionality + movement][b] == 0) {
|
||||||
|
field[directionality + movement][b] = field[directionality][b];
|
||||||
|
field[directionality][b] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue