2025-11-10 09:40:02 +01:00
|
|
|
#include "../include/gui.h"
|
2025-11-10 11:02:50 +01:00
|
|
|
#include <string.h>
|
2025-11-10 09:40:02 +01:00
|
|
|
|
|
|
|
|
/************** FUNZIONI GUI ***************/
|
|
|
|
|
|
|
|
|
|
char* title[] =
|
|
|
|
|
{
|
|
|
|
|
"###########################################################################################################",
|
|
|
|
|
"# o8888o o8888o o8888o o8888o o8888o o8888o o8 80 o8888o o8888o o8888o o8888o o8888o #",
|
|
|
|
|
"# 888o 0oooo0 88 888 88 88oo oo 888o 888o88 88 888 88 888 88 88oo 88oo88 #",
|
|
|
|
|
"# o888 88 888888 88 88 o888 88 88 88 888 88 888 88 88 88 88 #",
|
|
|
|
|
"# 088880 88 88 88 888880 088888 088880 08 80 088880 088880 00 088888 88 88o #",
|
|
|
|
|
"###########################################################################################################"
|
2025-11-10 11:02:50 +01:00
|
|
|
};
|
2025-11-10 09:40:02 +01:00
|
|
|
|
|
|
|
|
char menu_desc[] = "BENVENUTO. Premi qualsiasi tasto per giocare...";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char* gameover[] =
|
|
|
|
|
{
|
|
|
|
|
"o8888o o8888o o8oo8o o8888o o8888o 88 8o o8888o o8888o",
|
|
|
|
|
"888 oo 88 888 88\\/88 88oo oo 88 888 88 88 88oo 88oo88",
|
|
|
|
|
"888 8 888888 88 88 88 88 888 88 o8 88 88 88 ",
|
|
|
|
|
"O88880 88 88 88 88 888880 088880 888O 888880 88 88o"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
char gameover_desc[] = "HAI PERSO. Premi q per uscire...";
|
|
|
|
|
|
|
|
|
|
char* win_screen[] =
|
|
|
|
|
{
|
|
|
|
|
"o8 o8 o8888o o8 8o o8 8o o8888o o8 8o",
|
2025-11-10 11:02:50 +01:00
|
|
|
"88 o8 88 888 88 88 oo 88 88 88 888o88",
|
2025-11-10 09:40:02 +01:00
|
|
|
"888 88 888 88 88 88/\\88 88 88 888",
|
|
|
|
|
"888 088880 088880 8888 088880 88 88"
|
|
|
|
|
};
|
|
|
|
|
char win_desc[] = "HAI VINTO. Premi q per uscire...";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void init_colors() {
|
|
|
|
|
start_color();
|
|
|
|
|
init_pair(ENEMY_PAIR, COLOR_RED, COLOR_BLACK);
|
|
|
|
|
init_pair(TITLE_PAIR, COLOR_MAGENTA, COLOR_BLACK);
|
|
|
|
|
init_pair(GMOVR_PAIR, COLOR_RED, COLOR_BLACK);
|
|
|
|
|
init_pair(BONUS_PAIR, COLOR_GREEN, COLOR_BLACK);
|
|
|
|
|
init_pair(WINSC_PAIR, COLOR_YELLOW, COLOR_BLACK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_menu(WINDOW* win) {
|
|
|
|
|
int height;
|
|
|
|
|
int width;
|
|
|
|
|
getmaxyx(win, height, width);
|
|
|
|
|
|
|
|
|
|
wattron(win, COLOR_PAIR(TITLE_PAIR));
|
|
|
|
|
for(int i = 0; i < (TEXTLINES+BORDERLINES); i++) {
|
|
|
|
|
mvwprintw(win, i+1, (width-(strlen(title[0])))/2, "%s", title[i]);
|
|
|
|
|
}
|
|
|
|
|
wattroff(win, COLOR_PAIR(TITLE_PAIR));
|
|
|
|
|
|
|
|
|
|
wattron(win, A_BLINK);
|
|
|
|
|
mvwprintw(win, (TEXTLINES+BORDERLINES)+1, (width-(strlen(menu_desc)))/2, "%s", menu_desc);
|
|
|
|
|
wattroff(win, A_BLINK);
|
|
|
|
|
|
2025-11-10 11:02:50 +01:00
|
|
|
wrefresh(win);
|
2025-11-10 09:40:02 +01:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_gameover(WINDOW* win) {
|
|
|
|
|
int height;
|
|
|
|
|
int width;
|
|
|
|
|
int ch;
|
|
|
|
|
wclear(win);
|
|
|
|
|
getmaxyx(win, height, width);
|
|
|
|
|
|
|
|
|
|
wattron(win, COLOR_PAIR(GMOVR_PAIR));
|
|
|
|
|
for(int i = 0; i < TEXTLINES; i++) {
|
|
|
|
|
mvwprintw(win, i+1, (width-(strlen(gameover[0])))/2, "%s", gameover[i]);
|
|
|
|
|
}
|
|
|
|
|
wattroff(win, COLOR_PAIR(GMOVR_PAIR));
|
|
|
|
|
|
|
|
|
|
wattron(win, A_BLINK);
|
|
|
|
|
mvwprintw(win, TEXTLINES+1, (width-(strlen(gameover_desc)))/2, "%s", gameover_desc);
|
|
|
|
|
wattroff(win, A_BLINK);
|
|
|
|
|
|
2025-11-10 11:02:50 +01:00
|
|
|
wrefresh(win);
|
2025-11-10 09:40:02 +01:00
|
|
|
while((ch = wgetch(win)) != 'q');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_win_screen(WINDOW* win) {
|
|
|
|
|
int height;
|
|
|
|
|
int width;
|
|
|
|
|
int ch;
|
|
|
|
|
wclear(win);
|
|
|
|
|
getmaxyx(win, height, width);
|
|
|
|
|
|
|
|
|
|
wattron(win, COLOR_PAIR(WINSC_PAIR));
|
|
|
|
|
for(int i = 0; i < TEXTLINES; i++) {
|
|
|
|
|
mvwprintw(win, i+1, (width-(strlen(win_screen[0])))/2, "%s", win_screen[i]);
|
|
|
|
|
}
|
|
|
|
|
wattroff(win, COLOR_PAIR(WINSC_PAIR));
|
|
|
|
|
|
|
|
|
|
wattron(win, A_BLINK);
|
|
|
|
|
mvwprintw(win, TEXTLINES+1, (width-(strlen(win_desc)))/2, "%s", win_desc);
|
|
|
|
|
wattroff(win, A_BLINK);
|
|
|
|
|
|
2025-11-10 11:02:50 +01:00
|
|
|
wrefresh(win);
|
2025-11-10 09:40:02 +01:00
|
|
|
while((ch = wgetch(win)) != 'q');
|
|
|
|
|
return;
|
2025-11-10 11:02:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_status_bar(WINDOW* main_win, int y, int x, struct status game_status) {
|
|
|
|
|
int status_x = x + 1;
|
|
|
|
|
int status_y = y;
|
|
|
|
|
status_x++;
|
|
|
|
|
|
|
|
|
|
mvwprintw(main_win, status_y, status_x, "LIVES:\t%d", game_status.lives);
|
|
|
|
|
mvwprintw(main_win, status_y+1, status_x, "SCORE:\t%d", game_status.score);
|
|
|
|
|
mvwprintw(main_win, status_y+2, status_x, "TOP SCORE:\t%d", game_status.top_score);
|
|
|
|
|
mvwprintw(main_win, status_y+3, status_x, "BULLETS:\t%d", game_status.remaining_bullets);
|
|
|
|
|
|
|
|
|
|
wrefresh(main_win);
|
|
|
|
|
return;
|
|
|
|
|
}
|