|
@@ -54,7 +54,7 @@ int main(int argc,char** argv)
|
|
|
double shootrate; //probability of an enemy shooting a bomb
|
|
|
int command; //keyboard input
|
|
|
int score=0; //score: gain +100 when an enemy is destroyed and +50 when a bomb is destroyed
|
|
|
- char level='1'; //difficulty level
|
|
|
+ int level=1; //difficulty level
|
|
|
//bool sound=false;
|
|
|
|
|
|
/*//PTHREAD STUFF
|
|
@@ -97,12 +97,13 @@ int main(int argc,char** argv)
|
|
|
|
|
|
WALLS_NUM=2;
|
|
|
|
|
|
- choose_level(shootrate, refresh_time, boss1, level, ENEMY_NUM, commands); //choose difficulty level and set game parameters and boss
|
|
|
+ level = choose_level(commands); // get desired level
|
|
|
+ setup_level(level, shootrate, refresh_time, boss1, ENEMY_NUM, commands); // set game parameters and boss
|
|
|
load_enemies(enemies,ENEMY_NUM);
|
|
|
player1.set_commands(commands);
|
|
|
erase();
|
|
|
|
|
|
- if(atoi(&level)==1) WALLS_NUM=3;
|
|
|
+ if(level==1) WALLS_NUM=3;
|
|
|
|
|
|
|
|
|
w_vec walls(WALLS_NUM);
|
|
@@ -240,72 +241,49 @@ int main(int argc,char** argv)
|
|
|
interactions(player1,bullets,bombs,enemies,walls,powerups,rockets,boss1,score);
|
|
|
|
|
|
///////ENDGAME CHECKS
|
|
|
- if(boss1.health<1) //YOU WON!!
|
|
|
+ if(boss1.health<1 || gameover(player1,bombs))
|
|
|
{
|
|
|
/*if(sound){
|
|
|
pkill_music(thread[0]);
|
|
|
win_theme = pthread_create(&thread[2],NULL,pwin_theme,NULL);
|
|
|
}*/
|
|
|
-
|
|
|
- Victory(boss1.name,score,level,chflag);
|
|
|
-
|
|
|
+
|
|
|
WINDOW *replay;
|
|
|
-
|
|
|
- replay=newwin(3,25,26,20);
|
|
|
- box(replay,ACS_VLINE,ACS_HLINE);
|
|
|
-
|
|
|
- if(playagain(replay)) //playagain() returns true if player wants to play again, false otherwise
|
|
|
+ if(boss1.health<1) // YOU WON
|
|
|
+ {
|
|
|
+ Victory(boss1.name,score,level,chflag);
|
|
|
+ replay=newwin(3,25,26,20);
|
|
|
+ } else // YOU LOST
|
|
|
{
|
|
|
- delwin(replay);
|
|
|
- timeout(500);
|
|
|
- score=0;
|
|
|
- erase();
|
|
|
- refresh();
|
|
|
- choose_level(shootrate, refresh_time, boss1, level, ENEMY_NUM, commands);
|
|
|
- load_enemies(enemies,ENEMY_NUM);
|
|
|
- reset(player1, enemies, boss1, bullets, bombs, walls, powerups,rockets, level,chflag); // reset box, player, enemy and deletes all bullets and bombs
|
|
|
- erase();
|
|
|
- refresh();
|
|
|
- continue;
|
|
|
+ Defeat(score);
|
|
|
+ replay=newwin(3,25,17,20);
|
|
|
}
|
|
|
- else {
|
|
|
- endwin();
|
|
|
- cout<<lightgreen<<"Game exited correctly."<<none<<endl;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if(gameover(player1,bombs))
|
|
|
- {
|
|
|
- Defeat(score);
|
|
|
-
|
|
|
- WINDOW* replay;
|
|
|
-
|
|
|
- replay=newwin(3,25,17,20);
|
|
|
box(replay,ACS_VLINE,ACS_HLINE);
|
|
|
-
|
|
|
- if(playagain(replay)) //playagain() returns true if player wants to play again, false otherwise
|
|
|
+
|
|
|
+ switch(char choice = playagain(replay)) // playagain() returns 'y', 'n' or 'q'
|
|
|
{
|
|
|
- delwin(replay);
|
|
|
- timeout(500);
|
|
|
- score=0;
|
|
|
- erase();
|
|
|
- refresh();
|
|
|
- choose_level(shootrate, refresh_time, boss1, level, ENEMY_NUM, commands);
|
|
|
- load_enemies(enemies,ENEMY_NUM);
|
|
|
- reset(player1, enemies, boss1, bullets, bombs, walls, powerups,rockets,level,chflag); // reset box, player, enemy and delete all bullets and bombs
|
|
|
- erase();
|
|
|
- refresh();
|
|
|
- continue;
|
|
|
- }
|
|
|
- else {
|
|
|
- endwin();
|
|
|
- cout<<lightgreen<<"Game exited correctly."<<none<<endl;
|
|
|
- return 0;
|
|
|
+ case 'y':
|
|
|
+ case 'n':
|
|
|
+ delwin(replay);
|
|
|
+ timeout(500);
|
|
|
+ score=0;
|
|
|
+ erase();
|
|
|
+ refresh();
|
|
|
+ if(choice=='n')
|
|
|
+ level = choose_level(commands); // get desired level
|
|
|
+ setup_level(level, shootrate, refresh_time, boss1, ENEMY_NUM, commands); // set game parameters and boss
|
|
|
+ load_enemies(enemies,ENEMY_NUM);
|
|
|
+ reset(player1, enemies, boss1, bullets, bombs, walls, powerups,rockets, level,chflag); // reset box, player, enemy and deletes all bullets and bombs
|
|
|
+ erase();
|
|
|
+ refresh();
|
|
|
+ continue; // Go to the beginning of the main loop
|
|
|
+ case 'q':
|
|
|
+ endwin();
|
|
|
+ cout<<lightgreen<<"Game exited correctly."<<none<<endl;
|
|
|
+ return 0;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
draw(player1,bullets,bombs,enemies,walls,powerups,rockets,boss1);
|
|
|
write_score(Score,score);
|
|
|
|