Как можно было бы сократить размер кода?
Может быть можно было бы использовать другой подход?
В общем мне нужны конструктивные советы. Кстати, подобные советы, как: используй процедурное программирование для таких прог в топку - я практикую ООП .
Код:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
const unsigned short languages = 2;
const unsigned short strings = 12;
string texture [ languages ] [ strings ] =
{
			{
				"Сложность: \n1: 0 - 10, 5 попыток\n2: 0 - 50, 8 попыток\n3: 0 - 100, 10 попыток\n4: 0 - 1000, 20 попыток \n5: свой вариант сложности  \n>",
				"Введите верхнуюю границу случайного числа >",
				"Введите количество попыток >",
				"Хотите ли вы использовать данные настройки при следующей игре? ( да/нет ) >",
				"Количество попыток: ",
				"Введите число > ",
				"Меньше \n",
				"Больше \n",
				"Ура, вы угадали  \n",
				"Заданное число было равно: ",
				"Хотите ли вы сыграть еще? ( да/нет ) >"
			},
			{
				"Complexity: \n1: 0 - 10, 5 attempts\n2: 0 - 50, 8 attempts\n3: 0 - 100, 10 attempts\n4: 0 - 1000, 20 attempts \n5: Personal variant of complexity.  \n>",
				"Enter upper border of random number >",
				"Enter number of attempts >",
				"Do you want to use these settings in future game ( yes/no ) >",
				"Number of attempts: ",
				"Enter a number > ",
				"Smaller \n",
				"Bigger \n",
				"Oh, you are lucky
 \n",
				"Заданное число было равно: ",
				"Хотите ли вы сыграть еще? ( да/нет ) >"
			},
			{
				"Complexity: \n1: 0 - 10, 5 attempts\n2: 0 - 50, 8 attempts\n3: 0 - 100, 10 attempts\n4: 0 - 1000, 20 attempts \n5: Personal variant of complexity.  \n>",
				"Enter upper border of random number >",
				"Enter number of attempts >",
				"Do you want to use these settings in future game ( yes/no ) >",
				"Number of attempts: ",
				"Enter a number > ",
				"Smaller \n",
				"Bigger \n",
				"Oh, you are lucky  \n",
				"Proposed number was: ",
				"Do you want to play again? ( yes/no ) >"
			}
};
class game
{
	private:
		unsigned short choice;
		unsigned short randnum;
		unsigned short entnum;
		unsigned short steps;
		unsigned short upbord;
		unsigned short MAXsteps;
		string settings;
		string langstr;
		unsigned short langindex;
	public:
		string ch;
		// Конструктор ==============================
		game () : randnum ( 0 ), entnum ( 0 ), steps ( 0 ), choice ( 0 ), settings ( "нет" ), langstr ( "r" ), langindex ( 0 ) { 	}
		// ==========================================================
		void print_texture ( int );
		void set_language ()
		{
			cout << "\nChoose the language ( e/r or english/russian ) >";
			cin >> langstr;
			if ( langstr == "r" || langstr == "russian" )
			{
				langindex = 0;
			}
	          else
	          {
	          	langindex = 1;
	          }
		}
		void set_choice()
		{
			if ( settings == "нет" || settings == "no")
			{
				print_texture ( 0 );
				cin >> choice;
				switch ( choice )
				{
					case 1:
						upbord = 10;
						MAXsteps = 5;
						break;
					case 2:
						upbord = 50;
						MAXsteps = 8;
						break;
					case 3:
						upbord = 100;
						MAXsteps = 10;
						break;
					case 4:
						upbord = 1000;
						MAXsteps = 20;
						break;
					case 5:
						print_texture ( 1 );
						cin >> upbord;
						print_texture ( 2 );
						cin >> MAXsteps;
						print_texture ( 3 );
						cin >> settings;
						break;
					default:
						upbord = 100;
						MAXsteps = 8;
				}
			}
		}
		void set_rand ()
		{
			srand ( time ( NULL ) );
			randnum = rand () % upbord;
		}
		void enter_num ()
		{
			do
			{
				print_texture ( 4 );
				cout <<  MAXsteps - steps++ << '\n';
				print_texture ( 5 );
				cin >> entnum;
				if ( entnum > randnum )
					print_texture ( 6 );
				else
				if ( entnum < randnum )
					print_texture ( 7 );
				else
				if ( entnum == randnum )
					print_texture ( 8 );
			} while ( entnum != randnum && steps < MAXsteps );
			if ( steps == MAXsteps )
			{
				print_texture ( 9 );
				cout << randnum << '\n';
			}
			steps = 0;
		}
		void quast ()
		{
			print_texture ( 10 );
			cin >> ch;
		}
};
void game::print_texture( int num )
{
	cout << texture [ langindex ] [ num ];
}
int main()
{
	cout << "Игра называется \"Угадай число\". Данная игра написана только для практики программирования на С++. Игра основана на Объектно-ориентированном программировании. © Tikhonov Sergey ";
	game g;
	g.set_language();
	do
	{
		g.set_choice();
		g.set_rand();
		g.enter_num();
		g.quast();
	} while ( g.ch != "no" && g.ch != "нет" && g.ch!= "not" );
	return 0;
}
 \n",
				"Proposed number was: ",
				"Do you want to play again? ( yes/no ) >"
			}
};
class game
{
	private:
		unsigned short choice;
		unsigned short randnum;
		unsigned short entnum;
		unsigned short steps;
		unsigned short upbord;
		unsigned short MAXsteps;
		string settings;
		string langstr;
		unsigned short langindex;
	public:
		string ch;
		// Конструктор ==============================
		game () : randnum ( 0 ), entnum ( 0 ), steps ( 0 ), choice ( 0 ), settings ( "нет" ), langstr ( "r" ), langindex ( 0 ) { 	}
		// ==========================================================
		void print_texture ( int );
		void set_language ()
		{
			cout << "\nChoose the language ( e/r or english/russian ) >";
			cin >> langstr;
			if ( langstr == "r" || langstr == "russian" )
			{
				langindex = 0;
			}
	          else
	          {
	          	langindex = 1;
	          }
		}
		void set_choice()
		{
			if ( settings == "нет" || settings == "no")
			{
				print_texture ( 0 );
				cin >> choice;
				switch ( choice )
				{
					case 1:
						upbord = 10;
						MAXsteps = 5;
						break;
					case 2:
						upbord = 50;
						MAXsteps = 8;
						break;
					case 3:
						upbord = 100;
						MAXsteps = 10;
						break;
					case 4:
						upbord = 1000;
						MAXsteps = 20;
						break;
					case 5:
						print_texture ( 1 );
						cin >> upbord;
						print_texture ( 2 );
						cin >> MAXsteps;
						print_texture ( 3 );
						cin >> settings;
						break;
					default:
						upbord = 100;
						MAXsteps = 8;
				}
			}
		}
		void set_rand ()
		{
			srand ( time ( NULL ) );
			randnum = rand () % upbord;
		}
		void enter_num ()
		{
			do
			{
				print_texture ( 4 );
				cout <<  MAXsteps - steps++ << '\n';
				print_texture ( 5 );
				cin >> entnum;
				if ( entnum > randnum )
					print_texture ( 6 );
				else
				if ( entnum < randnum )
					print_texture ( 7 );
				else
				if ( entnum == randnum )
					print_texture ( 8 );
			} while ( entnum != randnum && steps < MAXsteps );
			if ( steps == MAXsteps )
			{
				print_texture ( 9 );
				cout << randnum << '\n';
			}
			steps = 0;
		}
		void quast ()
		{
			print_texture ( 10 );
			cin >> ch;
		}
};
void game::print_texture( int num )
{
	cout << texture [ langindex ] [ num ];
}
int main()
{
	cout << "Игра называется \"Угадай число\". Данная игра написана только для практики программирования на С++. Игра основана на Объектно-ориентированном программировании. © Tikhonov Sergey ";
	game g;
	g.set_language();
	do
	{
		g.set_choice();
		g.set_rand();
		g.enter_num();
		g.quast();
	} while ( g.ch != "no" && g.ch != "нет" && g.ch!= "not" );
	return 0;
}
Помогите мне вырасти ценным и грамотным программистом.




