Update from 10

This commit is contained in:
Administrator 2024-07-01 08:16:54 +00:00
parent 8a9bab3a4e
commit e9eb0f9a65
2 changed files with 117 additions and 91 deletions

View file

View file

@ -70,11 +70,8 @@ void moveleft(player_pos *frog_pos)
} }
} }
void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos) void on_start_state(signals sig, frog_state *state)
{ {
switch (*state)
{
case START:
switch (sig) switch (sig)
{ {
case ENTER_BTN: case ENTER_BTN:
@ -87,9 +84,10 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
*state = START; *state = START;
break; break;
} }
}
break; void on_spawn_state(frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos)
case SPAWN: {
if (stats->level > LEVEL_CNT) if (stats->level > LEVEL_CNT)
*state = GAMEOVER; *state = GAMEOVER;
else else
@ -102,9 +100,10 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
} }
else else
*state = FILE_ERROR_STATE; *state = FILE_ERROR_STATE;
}
break; void on_moving_state(signals sig, frog_state *state, board_t *map, player_pos *frog_pos)
case MOVING: {
switch (sig) switch (sig)
{ {
case MOVE_UP: case MOVE_UP:
@ -135,9 +134,10 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
else else
*state = SHIFTING; *state = SHIFTING;
} }
}
break; void on_shifting_state(frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos)
case SHIFTING: {
shift_map(map); shift_map(map);
if (check_collide(frog_pos, map)) if (check_collide(frog_pos, map))
@ -148,11 +148,13 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
print_board(map, frog_pos); print_board(map, frog_pos);
print_stats(stats); print_stats(stats);
} }
}
break; void on_reach_state(frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos)
case REACH: {
stats->score += 1; stats->score += 1;
add_proggress(map); add_proggress(map);
if (check_level_compl(map)) if (check_level_compl(map))
{ {
stats->level++; stats->level++;
@ -165,9 +167,10 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
print_finished(map); print_finished(map);
*state = MOVING; *state = MOVING;
} }
}
break; void on_collide_state(frog_state *state, game_stats_t *stats, player_pos *frog_pos)
case COLLIDE: {
if (stats->lives) if (stats->lives)
{ {
stats->lives--; stats->lives--;
@ -176,6 +179,29 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
} }
else else
*state = GAMEOVER; *state = GAMEOVER;
}
void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos)
{
switch (*state)
{
case START:
on_start_state(sig, state);
break;
case SPAWN:
on_spawn_state(state, stats, map, frog_pos);
break;
case MOVING:
on_moving_state(sig, state, map, frog_pos);
break;
case SHIFTING:
on_shifting_state(state, stats, map, frog_pos);
break;
case REACH:
on_reach_state(state, stats, map, frog_pos);
break;
case COLLIDE:
on_collide_state(state, stats, frog_pos);
break; break;
case GAMEOVER: case GAMEOVER:
print_banner(stats); print_banner(stats);