space-shooter/src/gui.c

120 lines
3.8 KiB
C
Raw Normal View History

#include "../include/gui.h"
/************** 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 #",
"###########################################################################################################"
};
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",
"88 o8 88 888 88 88 oo 88 88 88 888o88",
"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) {
// Ottieni parametri della finestra
int height;
int width;
getmaxyx(win, height, width);
// Scritta colorata
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));
// Scritta che blinka
wattron(win, A_BLINK);
mvwprintw(win, (TEXTLINES+BORDERLINES)+1, (width-(strlen(menu_desc)))/2, "%s", menu_desc);
wattroff(win, A_BLINK);
// stampa a video
refresh();
return;
}
void print_gameover(WINDOW* win) {
// Parametri della finestra e pulisci tutto
int height;
int width;
int ch;
wclear(win);
getmaxyx(win, height, width);
// Stampa della scritta colorata
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));
// Stampa della scritta che blinka
wattron(win, A_BLINK);
mvwprintw(win, TEXTLINES+1, (width-(strlen(gameover_desc)))/2, "%s", gameover_desc);
wattroff(win, A_BLINK);
// Stampa a video e attendi input
refresh();
while((ch = wgetch(win)) != 'q');
return;
}
void print_win_screen(WINDOW* win) {
// Parametri della finestra e pulisci tutto
int height;
int width;
int ch;
wclear(win);
getmaxyx(win, height, width);
// Stampa della scritta colorata
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));
// Stampa della scritta che blinka
wattron(win, A_BLINK);
mvwprintw(win, TEXTLINES+1, (width-(strlen(win_desc)))/2, "%s", win_desc);
wattroff(win, A_BLINK);
// Stampa a video e attendi input
refresh();
while((ch = wgetch(win)) != 'q');
return;
}