Skip to content

Commit

Permalink
plugins: snake: simplification in direction calculation (flipperdevic…
Browse files Browse the repository at this point in the history
…es#1361)

Co-authored-by: hedger <[email protected]>
  • Loading branch information
QtRoS and hedger authored Jul 4, 2022
1 parent 43fd2e4 commit 05b7b7f
Showing 1 changed file with 5 additions and 38 deletions.
43 changes: 5 additions & 38 deletions applications/snake_game/snake_game.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ typedef enum {
GameStateGameOver,
} GameState;

// Note: do not change without purpose. Current values are used in smart
// orthogonality calculation in `snake_game_get_turn_snake`.
typedef enum {
DirectionUp,
DirectionRight,
Expand Down Expand Up @@ -195,44 +197,9 @@ static bool
}

static Direction snake_game_get_turn_snake(SnakeState const* const snake_state) {
switch(snake_state->currentMovement) {
case DirectionUp:
switch(snake_state->nextMovement) {
case DirectionRight:
return DirectionRight;
case DirectionLeft:
return DirectionLeft;
default:
return snake_state->currentMovement;
}
case DirectionRight:
switch(snake_state->nextMovement) {
case DirectionUp:
return DirectionUp;
case DirectionDown:
return DirectionDown;
default:
return snake_state->currentMovement;
}
case DirectionDown:
switch(snake_state->nextMovement) {
case DirectionRight:
return DirectionRight;
case DirectionLeft:
return DirectionLeft;
default:
return snake_state->currentMovement;
}
default: // case DirectionLeft:
switch(snake_state->nextMovement) {
case DirectionUp:
return DirectionUp;
case DirectionDown:
return DirectionDown;
default:
return snake_state->currentMovement;
}
}
// Sum of two `Direction` lies between 0 and 6, odd values indicate orthogonality.
bool is_orthogonal = (snake_state->currentMovement + snake_state->nextMovement) % 2 == 1;
return is_orthogonal ? snake_state->nextMovement : snake_state->currentMovement;
}

static Point snake_game_get_next_step(SnakeState const* const snake_state) {
Expand Down

0 comments on commit 05b7b7f

Please sign in to comment.