Browse Source

Make level an integer

Since level can range from 1 to 4, it makes more sense to have it
defined as an integer rather than as a character.
Matteo Zeccoli Marazzini 4 years ago
parent
commit
e851a70a12
3 changed files with 19 additions and 17 deletions
  1. 13 11
      functions.cpp
  2. 1 1
      functions.hpp
  3. 5 5
      invaders.cpp

+ 13 - 11
functions.cpp

@@ -222,10 +222,11 @@ void print_info(){
 }
 
 
-void choose_level(double& shootr, int& refresh_t, boss& boss1, char& level, int& enemy_num, int* commands)
+void choose_level(double& shootr, int& refresh_t, boss& boss1, int& level, int& enemy_num, int* commands)
 {
 	std::string phrase;
 	phrase=choose_phrase();
+	char input;
 	
 	do{
 		print_title();
@@ -253,39 +254,40 @@ void choose_level(double& shootr, int& refresh_t, boss& boss1, char& level, int&
 
 		timeout(80);
 		
-		level=tolower(getch());
+		input=tolower(getch());
 	
-		if(!(atoi(&level)==1 || atoi(&level)==2 || atoi(&level)==3 || atoi(&level)==4 || level=='i' || level=='h' || level=='r' || level =='q') && level!=ERR){
+		if(!(input=='1' || input=='2' || input=='3' || input=='4' || input=='i' || input=='h' || input=='r' || input =='q') && input!=ERR){
 			attron(COLOR_PAIR(2));
 			mvprintw(14,0,"Bad input. Please choose a number within 1 and 4.");
 			attron(COLOR_PAIR(0));	
 		}
 		
-		if(level=='i')
+		if(input=='i')
 			print_info();
 		
-		if(level=='h')
+		if(input=='h')
 			print_scores();
 
-		if(level=='r')
+		if(input=='r')
 			phrase=choose_phrase();
 			
-		if(level=='c')
+		if(input=='c')
 			change_commands(commands);
 		
-		if(level=='q'){
+		if(input=='q'){
 			endwin();
 			cout<<lightgreen<<"Game exited correctly."<<none<<endl;
 			exit(1);
 		}
 		
-	}while(!(atoi(&level)==1 || atoi(&level)==2 || atoi(&level)==3 || atoi(&level)==4));
+	}while(!(input=='1' || input=='2' || input=='3' || input=='4'));
 	
 	refresh_t=0;
 	
 	create_folder(0);
-	
-	switch(atoi(&level))        //setting game parameters
+	level = input - '0';
+
+	switch(level)        //setting game parameters
 	{
 		case 1:
 		{

+ 1 - 1
functions.hpp

@@ -49,7 +49,7 @@ void print_info();
 
 void print_scores();
 
-void choose_level(double& shootr, int& refresh_t, boss &boss1, char& level, int& enemy_num,int* commands);
+void choose_level(double& shootr, int& refresh_t, boss &boss1, int& level, int& enemy_num, int* commands);
 
 void change_commands(int* commands);
 

+ 5 - 5
invaders.cpp

@@ -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,12 @@ 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
+	choose_level(shootrate, refresh_time, boss1, level, 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);
@@ -261,7 +261,7 @@ int main(int argc,char** argv)
 				score=0;
 				erase();
 				refresh();
-				choose_level(shootrate, refresh_time, boss1, level, ENEMY_NUM, commands);
+				choose_level(shootrate, refresh_time, boss1, level, 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();
@@ -292,7 +292,7 @@ int main(int argc,char** argv)
 				score=0;
 				erase();
 				refresh();
-				choose_level(shootrate, refresh_time, boss1, level, ENEMY_NUM, commands);
+				choose_level(shootrate, refresh_time, boss1, level, 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 delete all bullets and bombs
 				erase();