It might be nicer to handle different parts of the main function in other functions. For example have a traps function, and a puzzles function and so on. Then the main function will be more readable and can focus on the overall program logic, leaving the details of the different parts of the game to sub-functions.
So you might end up with something like:
Code:
void go4e_15112a()
{
	int game_exit=0;
	int pos=0; // player position
	int strength=10, skill=20;
	init();
	while (!game_exit)
	{
		handle_description(pos);

		if (!game_exit) handle_monsters(pos);
		if (strength<=0) game_exit=1;

		if (!game_exit) handle_traps(pos);
		if (strength<=0) game_exit=1;

		if (!game_exit) handle_puzzles(pos);

		if (!game_exit) display_directions(pos);

		if (!game_exit) handle_input(&pos); // &pos because this function might change it
	}
}
with the rest of the go4e_15112() code shifted out to these functions.