Aggiunti colori e aggiornato il TODO
This commit is contained in:
parent
62f904d39a
commit
8eab9d9c54
2 changed files with 57 additions and 6 deletions
20
TODO
20
TODO
|
|
@ -1,4 +1,18 @@
|
||||||
Da fare:
|
Da fare:
|
||||||
|
- Creazione dei bonus:
|
||||||
- iniziare a spostare in delle funzioni la GUI
|
- (+) per aumentare di uno la vita
|
||||||
- salvataggio e menu
|
- (#) per autoshoot (che deve durare tot secondi)
|
||||||
|
- Aggiungere condizione di vittoria:
|
||||||
|
- tipo 100 punti
|
||||||
|
- Uso della libreria menu.h per creare menu di gioco:
|
||||||
|
- possibilità di salvare la partita al gameover, con inserimento di un nome di 3 lettere
|
||||||
|
- possibilità di cambiare impostazioni (che vengono messe in un config file):
|
||||||
|
- numero di nemici
|
||||||
|
- velocità
|
||||||
|
- quantità di bonus
|
||||||
|
- durata autoshoot
|
||||||
|
- vite rigenerate da (+)
|
||||||
|
- etc...
|
||||||
|
- possibilità di vedere la scoreboard
|
||||||
|
- passaggio da caratteri a stringhe (se vogliamo, dopo il codice si incasina un po'):
|
||||||
|
- (-X-) per nemici e |_^_| per il giocatore
|
||||||
|
|
|
||||||
43
main.c
43
main.c
|
|
@ -6,16 +6,26 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
/************* STATIC DEFINITIONS ************/
|
/************* STATIC DEFINITIONS ************/
|
||||||
#define DELAY 30000
|
// Game constants
|
||||||
#define ENEMY_N 5
|
#define ENEMY_N 5
|
||||||
#define BULLET_N 3
|
#define BULLET_N 3
|
||||||
|
#define LIVES_N 5
|
||||||
|
|
||||||
|
// Window constants
|
||||||
|
#define DELAY 30000
|
||||||
#define WIDTH 52
|
#define WIDTH 52
|
||||||
#define HEIGHT 30
|
#define HEIGHT 30
|
||||||
#define MIN_COLS 110
|
#define MIN_COLS 110
|
||||||
#define LIVES_N 5
|
|
||||||
|
// Aspect constatnts
|
||||||
#define TEXTLINES 4
|
#define TEXTLINES 4
|
||||||
#define BORDERLINES 2
|
#define BORDERLINES 2
|
||||||
|
|
||||||
|
#define ENEMY_PAIR 1
|
||||||
|
#define BONUS_PAIR 2
|
||||||
|
#define TITLE_PAIR 3
|
||||||
|
#define GMOVR_PAIR 4
|
||||||
|
|
||||||
/************* GAME STRUCTURES **************/
|
/************* GAME STRUCTURES **************/
|
||||||
struct speed {
|
struct speed {
|
||||||
int slowness;
|
int slowness;
|
||||||
|
|
@ -62,31 +72,49 @@ char* gameover[] =
|
||||||
char gameover_desc[] = "HAI PERSO. Premi q per uscire...";
|
char gameover_desc[] = "HAI PERSO. Premi q per uscire...";
|
||||||
|
|
||||||
void print_menu(WINDOW* win) {
|
void print_menu(WINDOW* win) {
|
||||||
|
// Ottieni parametri della finestra
|
||||||
int height;
|
int height;
|
||||||
int width;
|
int width;
|
||||||
getmaxyx(win, height, width);
|
getmaxyx(win, height, width);
|
||||||
|
|
||||||
|
// Scritta colorata
|
||||||
|
wattron(win, COLOR_PAIR(TITLE_PAIR));
|
||||||
for(int i = 0; i < (TEXTLINES+BORDERLINES); i++) {
|
for(int i = 0; i < (TEXTLINES+BORDERLINES); i++) {
|
||||||
mvwprintw(win, i+1, (width-(strlen(title[0])))/2, "%s", title[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);
|
wattron(win, A_BLINK);
|
||||||
mvwprintw(win, (TEXTLINES+BORDERLINES)+1, (width-(strlen(menu_desc)))/2, "%s", menu_desc);
|
mvwprintw(win, (TEXTLINES+BORDERLINES)+1, (width-(strlen(menu_desc)))/2, "%s", menu_desc);
|
||||||
wattroff(win, A_BLINK);
|
wattroff(win, A_BLINK);
|
||||||
|
|
||||||
|
// stampa a video
|
||||||
refresh();
|
refresh();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_gameover(WINDOW* win) {
|
void print_gameover(WINDOW* win) {
|
||||||
|
// Parametri della finestra e pulisci tutto
|
||||||
int height;
|
int height;
|
||||||
int width;
|
int width;
|
||||||
int ch;
|
int ch;
|
||||||
wclear(win);
|
wclear(win);
|
||||||
getmaxyx(win, height, width);
|
getmaxyx(win, height, width);
|
||||||
|
|
||||||
|
// Stampa della scritta colorata
|
||||||
|
wattron(win, COLOR_PAIR(GMOVR_PAIR));
|
||||||
for(int i = 0; i < TEXTLINES; i++) {
|
for(int i = 0; i < TEXTLINES; i++) {
|
||||||
mvwprintw(win, i+1, (width-(strlen(gameover[0])))/2, "%s", gameover[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);
|
wattron(win, A_BLINK);
|
||||||
mvwprintw(win, TEXTLINES+1, (width-(strlen(gameover_desc)))/2, "%s", gameover_desc);
|
mvwprintw(win, TEXTLINES+1, (width-(strlen(gameover_desc)))/2, "%s", gameover_desc);
|
||||||
wattroff(win, A_BLINK);
|
wattroff(win, A_BLINK);
|
||||||
|
|
||||||
|
// Stampa a video e attendi input
|
||||||
refresh();
|
refresh();
|
||||||
while((ch = wgetch(win)) != 'q');
|
while((ch = wgetch(win)) != 'q');
|
||||||
return;
|
return;
|
||||||
|
|
@ -147,6 +175,13 @@ int main() {
|
||||||
curs_set(0);
|
curs_set(0);
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
|
|
||||||
|
// Colori
|
||||||
|
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);
|
||||||
|
|
||||||
// Dimensioni finestra di gioco e controlli
|
// Dimensioni finestra di gioco e controlli
|
||||||
// calcolo delle misure della finestra
|
// calcolo delle misure della finestra
|
||||||
height = HEIGHT;
|
height = HEIGHT;
|
||||||
|
|
@ -156,7 +191,6 @@ int main() {
|
||||||
|
|
||||||
// Schermo troppo piccolo ?
|
// Schermo troppo piccolo ?
|
||||||
if(COLS < MIN_COLS || LINES < HEIGHT) {
|
if(COLS < MIN_COLS || LINES < HEIGHT) {
|
||||||
delwin(game_window);
|
|
||||||
curs_set(1);
|
curs_set(1);
|
||||||
endwin();
|
endwin();
|
||||||
printf("Gioco terminato.\n");
|
printf("Gioco terminato.\n");
|
||||||
|
|
@ -322,8 +356,11 @@ int main() {
|
||||||
|
|
||||||
// Nemici
|
// Nemici
|
||||||
for(int i = 0; i < ENEMY_N; i++) {
|
for(int i = 0; i < ENEMY_N; i++) {
|
||||||
|
wattron(game_window, COLOR_PAIR(1));
|
||||||
if (enemy[i].active) mvwprintw(game_window, enemy[i].y, enemy[i].x, "%c", enemy[i].symbol);
|
if (enemy[i].active) mvwprintw(game_window, enemy[i].y, enemy[i].x, "%c", enemy[i].symbol);
|
||||||
|
wattroff(game_window, COLOR_PAIR(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Status Bar
|
// Status Bar
|
||||||
print_status_bar(stdscr, win_starty, (win_startx + width), game_status);
|
print_status_bar(stdscr, win_starty, (win_startx + width), game_status);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue