Calling main recursively is not just a bad idea - it''s illegal to do so. The C++ standard forbids you from using main (ie calling it or taking it''s address) in a program.
I just realized this is "For Beginners". I suppose I could have been a little more helpful. :-)
Try to make your functions return values and leave further decisions (such as whether to exit the program) up to the caller; that will make changes to the program structure much easier. A couple of suggestions:
int main() { int menu; srand(time(NULL)); // you only need to do this once do { /* show menu */ cin >> menu; switch(menu) { case 1: GameMain(); break; case 2: /* show about screen, wait for keypress */ break; } } while(menu != 3); return 0; }
main must return an int (your compiler may not complain about void main but others will). Avoid error messages when the user selects invalid menu choices, simply show the menu again.