Chciałbym zapytać czy zastosowana w tej grze obsluga wyjatkow ma sens tzn. czy sa w tym bledy oraz jak ewentualnie napisac to lepiej ?
By nie zasmiecac podaje zrodlo calego programu :
http://pastebin.com/tdNhYG7y
a to miejsce o ktore pytam:
GRACZ* stworz_gracza(int nr)//przy imieniu gracz jest przelenienei bufora
{
system("cls");
int i;
int blad = 0;
unsigned int znak;
char nick[31];
cout<<"\n\nPodaj imie gracza "<<nr<<" (max 30 znakow)\n\n";
for(i = znak = 0;;++i)
{
znak = getchar();
if(i < 30 && znak != '\n')
nick[i] = znak;
if(i > 0 && znak == '\n')
break;
}
nick[i]='\0';
try
{
GRACZ* player = new GRACZ [sizeof(GRACZ)];
try
{
player->nazwa = new char [sizeof(nick)];
strncpy(player->nazwa, nick, sizeof(char[31]));
try
{
player->h_pry = new char [sizeof(char[41])];
try
{
player->h_pub = new char [sizeof(char[41])];
player->punkty = 0;
return player;
}
catch(bad_alloc)
{
blad = 4;
delete [] player->h_pry;
delete [] player->nazwa;
delete [] player;
}
}
catch(bad_alloc)
{
blad = 3;
delete [] player->nazwa;
delete [] player;
}
}
catch(bad_alloc)
{
blad = 2;
delete [] player;
}
}
catch(bad_alloc)
{
blad = 1;
}
if(blad > 0)
{
system("cls");
cout<<"Blad alokacji pamieci numer na etapie: "<<blad<<" \n\n\tZa chwile powrocisz do menu.\n\n\n Prosze ponow probe gry\n\n";
Sleep(10000);
system("cls");
return 0;
}
}