Init commit

This commit is contained in:
Administrator 2024-04-17 17:02:16 +00:00
parent 8bd653d363
commit 8c138fe3fe
7 changed files with 30 additions and 8 deletions

View file

@ -6,6 +6,7 @@
#include "objects.h" #include "objects.h"
void print_overlay(void); void print_overlay(void);
void print_levelerror(void);
void print_rectangle(int top_y, int bottom_y, int left_x, int right_x); void print_rectangle(int top_y, int bottom_y, int left_x, int right_x);
void print_stats(game_stats_t *stats); void print_stats(game_stats_t *stats);
void print_board(board_t *game, player_pos *frog); void print_board(board_t *game, player_pos *frog);

View file

@ -15,7 +15,8 @@ typedef enum
REACH, REACH,
COLLIDE, COLLIDE,
GAMEOVER, GAMEOVER,
EXIT_STATE EXIT_STATE,
FILE_ERROR_STATE
} frog_state; } frog_state;
typedef enum typedef enum

View file

@ -21,9 +21,10 @@ int lvlproc(board_t *map, game_stats_t *stats)
else else
map->ways[i][strcspn(map->ways[i], "\n")] = '\0'; map->ways[i][strcspn(map->ways[i], "\n")] = '\0';
} }
}
fclose(level); fclose(level);
}
else
rc = ERROR;
return rc; return rc;
} }

View file

@ -25,7 +25,7 @@ void game_loop()
while (break_flag) while (break_flag)
{ {
if (state == GAMEOVER || state == EXIT_STATE) if (state == GAMEOVER || state == EXIT_STATE || state == FILE_ERROR_STATE)
break_flag = FALSE; break_flag = FALSE;
sigact(get_signal(signal), &state, &stats, &map, &frog); sigact(get_signal(signal), &state, &stats, &map, &frog);
@ -33,4 +33,11 @@ void game_loop()
if (state == MOVING || state == START) if (state == MOVING || state == START)
signal = GET_USER_INPUT; signal = GET_USER_INPUT;
} }
if (state == FILE_ERROR_STATE)
{
print_levelerror();
nodelay(stdscr, FALSE);
getch();
}
} }

View file

@ -18,6 +18,16 @@ void print_overlay(void)
MVPRINTW(BOARD_N / 2, (BOARD_M - INTRO_MESSAGE_LEN) / 2 + 1, INTRO_MESSAGE); MVPRINTW(BOARD_N / 2, (BOARD_M - INTRO_MESSAGE_LEN) / 2 + 1, INTRO_MESSAGE);
} }
void print_levelerror(void)
{
clear();
MVPRINTW(0, 0, "An error occured openning level file!");
MVPRINTW(2, 0, "Please check ./tests/ directory.");
MVPRINTW(3, 0, "There should be 5 level files named level_(1-5).txt.");
MVPRINTW(4, 0, "Also try to open the game nearby ./tests/ directory.");
MVPRINTW(6, 0, "Press any key to exit.");
}
void print_rectangle(int top_y, int bottom_y, int left_x, int right_x) void print_rectangle(int top_y, int bottom_y, int left_x, int right_x)
{ {
MVADDCH(top_y, left_x, ACS_ULCORNER); MVADDCH(top_y, left_x, ACS_ULCORNER);

View file

@ -101,7 +101,7 @@ void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, p
*state = MOVING; *state = MOVING;
} }
else else
*state = EXIT_STATE; *state = FILE_ERROR_STATE;
break; break;
case MOVING: case MOVING:

View file

@ -50,13 +50,15 @@ action fsm_table[8][7] = {
void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos) void sigact(signals sig, frog_state *state, game_stats_t *stats, board_t *map, player_pos *frog_pos)
{ {
action act = NULL;
params_t prms; params_t prms;
prms.stats = stats; prms.stats = stats;
prms.state = state; prms.state = state;
prms.map = map; prms.map = map;
prms.frog_pos = frog_pos; prms.frog_pos = frog_pos;
action act = fsm_table[*state][sig]; if (*state != FILE_ERROR_STATE)
act = fsm_table[*state][sig];
if (act) if (act)
act(&prms); act(&prms);
@ -120,7 +122,7 @@ void spawn(params_t *prms)
*prms->state = MOVING; *prms->state = MOVING;
} }
else else
*prms->state = EXIT_STATE; *prms->state = FILE_ERROR_STATE;
} }
} }