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:
|
||||
|
||||
- iniziare a spostare in delle funzioni la GUI
|
||||
- salvataggio e menu
|
||||
- Creazione dei bonus:
|
||||
- (+) per aumentare di uno la vita
|
||||
- (#) 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>
|
||||
|
||||
/************* STATIC DEFINITIONS ************/
|
||||
#define DELAY 30000
|
||||
// Game constants
|
||||
#define ENEMY_N 5
|
||||
#define BULLET_N 3
|
||||
#define LIVES_N 5
|
||||
|
||||
// Window constants
|
||||
#define DELAY 30000
|
||||
#define WIDTH 52
|
||||
#define HEIGHT 30
|
||||
#define MIN_COLS 110
|
||||
#define LIVES_N 5
|
||||
|
||||
// Aspect constatnts
|
||||
#define TEXTLINES 4
|
||||
#define BORDERLINES 2
|
||||
|
||||
#define ENEMY_PAIR 1
|
||||
#define BONUS_PAIR 2
|
||||
#define TITLE_PAIR 3
|
||||
#define GMOVR_PAIR 4
|
||||
|
||||
/************* GAME STRUCTURES **************/
|
||||
struct speed {
|
||||
int slowness;
|
||||
|
|
@ -62,31 +72,49 @@ char* gameover[] =
|
|||
char gameover_desc[] = "HAI PERSO. Premi q per uscire...";
|
||||
|
||||
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;
|
||||
|
|
@ -147,6 +175,13 @@ int main() {
|
|||
curs_set(0);
|
||||
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
|
||||
// calcolo delle misure della finestra
|
||||
height = HEIGHT;
|
||||
|
|
@ -156,7 +191,6 @@ int main() {
|
|||
|
||||
// Schermo troppo piccolo ?
|
||||
if(COLS < MIN_COLS || LINES < HEIGHT) {
|
||||
delwin(game_window);
|
||||
curs_set(1);
|
||||
endwin();
|
||||
printf("Gioco terminato.\n");
|
||||
|
|
@ -322,8 +356,11 @@ int main() {
|
|||
|
||||
// Nemici
|
||||
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);
|
||||
wattroff(game_window, COLOR_PAIR(1));
|
||||
}
|
||||
|
||||
|
||||
// Status Bar
|
||||
print_status_bar(stdscr, win_starty, (win_startx + width), game_status);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue