OpenGL make TITLE MENU

Hello Guys im from korea.
I want to add a title menu to my team project right now, but I don’t know how to make it perfectly successful, so I’m asking for help here.
The current state is coming out when you start. If you press B, the game starts when you press 'Backbuffer? ’ I will attach the code below, so if you can help me, please help me as soon as possible!

#include "pch.h"
#include <stdlib.h>
#include <glut.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <ctime>

typedef struct {
	float x, y, z;
	float red, green, blue;
	int status;
	int onTable;

}Ball;

typedef struct {
	float red, green, blue;
	float x, y, z;
	int score;

}Hole;

typedef struct {
	float x, z;
	float w, h;
	int score;

}Block;

void init();
void cube();
void StopBalls();
void init_ball();
void init_holes();
void init_blocks();
void draw_Hole(Hole hole);
void draw_block(Block block);
void color_ball(float red, float green, float blue);


int rot = 15, rot2 = 180, rot3 = 0, flag = 0, CanSpeed = 1, IsSpeeding = 0, flag4, IsAnimatingTable = 0, arrlenght = 16; // 게임카메라 움직임설정
int temp, reflex = 0, score = 0, start = 0, isVColliding, isHColliding; // 공충돌에 대한 반사
int selected_Ball, old_Ball; // 볼 컨트롤을 전환할 때 색을 얻을 수 있는 이전 볼과 플레이어가 제어하는 현재 선택된 볼
char s[10], str[100];
const char*str2; // 화면에 문자출력
float aC, xC, zC, dis; // 원형 계산을 위한 C 변수, dis = 공과 구멍 사이의 거리
float velocity = 15, speed = 0.005, defSpeed, rot_temp = 0; // 공이 다른 공과 충돌했을 때 물리학적 변수 속도 조절 타이머를 시작한다.
int fRight[9] = { 0 }, fLeft[9] = { 0 }, fDown[9] = { 0 }, fUp[9] = { 0 }; // 각 볼에 대해 특정 측이 충돌에 들어갔을 때 0과 1로 초기화하는 플래그
clock_t starttime = clock(); //60초 게임시간
clock_t endtime; // 게임시간 끝
double duration; //작동 기간
Ball balls[16];
Hole holes[6];
Block blocks[8];

void reset()  // 새 게임 시 모든값 재설정
{
	rot2 = 180;
	rot3 = 0;
	rot = 15;
	flag = IsSpeeding = IsAnimatingTable = 1;
	CanSpeed = 1;
	reflex = 0;
	start = 1; velocity = 15; speed = 0.005; rot_temp = 0;
}
void print_score()  // 타이머, 스코어
{
	sprintf_s(str, "Score : %d", score);
	str2 = str;
	glColor3f(1.0, 1.0, 0.0);
	glRasterPos3f(-9, 10, 0);
	do glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *str2);
	while (*(++str2));

	if (IsAnimatingTable) {     
   //화면올라가는게 멈추면 타이머 시작
		endtime = clock();
		duration = (endtime - starttime) / (double)CLOCKS_PER_SEC; // 시간프레임
		sprintf_s(str, "Timer : %0.f", 60.0 - duration); // 왼쪽에다가 타이머설정
		str2 = str;
		glColor3f(0.0, 0.0, 1.0);
		glRasterPos3f(-9, 11, 0);
		do glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *str2);
		while (*(++str2));

		if (duration >= 60) {
			StopBalls();
			reset();
		}
	}
}

// 충돌 수평면 반환
int checkCollisionHorizontal(Ball a) {
	Block b;
	for (int k = 4; k < 8; k++) {
		b = blocks[k];
		if (a.x <= b.x + b.w &&
			a.x >= b.x &&
			a.z <= b.z + b.h &&
			a.z >= b.z - b.h) {
			return 2;
		}

		if (a.x <= b.x &&
			a.x >= b.x - b.w &&
			a.z <= b.z + b.h &&
			a.z >= b.z - b.h) {
			return 1;
		}
	}
	return 0;
}

// 충돌 수직면 반환
int checkCollisionVertical(Ball a)
{
	Block b;
	for (int k = 4; k < 8; k++) {
		b = blocks[k];
		if (a.x <= b.x + b.w &&
			a.x >= b.x - b.w &&
			a.z <= b.z &&
			a.z >= b.z - b.h) {
			return 4;
		}

		if (a.x <= b.x + b.w &&
			a.x >= b.x - b.w &&
			a.z <= b.z + b.h &&
			a.z >= b.z - b.h) {
			return 3;
		}


	}
	return 0;
}
//  I는 통제된 공 J는 다른 공 1.2 = 반지름 * 2
// 충돌 여부 점검후 공 이동 -> 힘에 따라 공들의 이동속도 조절예정
int move_x(int i)
{
	int j;
	for (j = 0; j < arrlenght; j++)
	{
		if (j != i && balls[j].onTable == 0) {
			if (balls[i].x >= balls[j].x - 1.2 &&
				balls[i].x <= balls[j].x + 1.2 &&
				balls[i].z >= balls[j].z - 1.2 &&
				balls[i].z <= balls[j].z + 1.2)
				return j;
		}
	}
	return -1;
}

void StopBalls()   // 공움직임 정지
{
	balls[selected_Ball].status = 1;

	for (int i = 0; i < arrlenght; i++)
	{
		if (i != selected_Ball)
			balls[i].status = 0;

		fRight[i] = 0;
		fLeft[i] = 0;
		fDown[i] = 0;
		fUp[i] = 0;
	}
}
void checkgame()  // 모든공이 다들어갔을때
{
	for (int i = 1; i < 16 && balls[i].onTable == 1; i++)
		if (i == 15)
		{
			StopBalls();
			reset();
		}

	if (score == 50) { // 수정예정 ( 현재 점수를 50점 채웠을 때 게임종료 )
		StopBalls();
		reset();
	}
}
// 방향키 설정

void keyboard(unsigned char key, int x, int y)
{
	if (key == 27) exit(1);

	//시작버튼
	if (key == 'n' && start == 1)
	{
	   init_ball();
	   start = 0;
	   score = 0;
	}

	if (key == 'a')
	{
		rot2 += 5;
	}
	if (key == 'w')
	{
		rot += 5;
		if (rot > 25)
			rot = 25;
	}
	if (key == 's')
	{
		rot -= 5;
		if (rot < 5)
			rot = 5;
	}
	if (key == 'd')
	{
		rot2 -= 5;
	}
	if (key == 'z')
	{
		rot3 += 5;
	}
	if (key == 'x')
	{
		rot3 -= 5;
	}
	//리셋
	if (key == 'b')
	{
	   StopBalls();
	   reset();
	   start = 1;   }
	glutPostRedisplay();
}
void draw()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glLoadIdentity();
	glTranslatef(0, -15, -30);
	glRotatef(rot, 1, 0, 0);
	glRotatef(rot2, 0, 1, 0);
	glRotatef(rot3, 0, 0, 1);

	gluLookAt(0, 0, -10, 0, 0, -5, 0, 1, 0);

	if (start == 1)
	{
		str2 = "Press N To Start New Game";
		glColor3f(1.0, 1.0, 0.0);
		glRasterPos3f(-4, 18, 0);
		do glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *str2);
		while (*(++str2));

		sprintf_s(str, "Your Score : %d", score);
		str2 = str;
		glColor3f(1.0, 1.0, 0.0);
		glRasterPos3f(-2.5, 20, 0);
		do glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *str2);
		while (*(++str2));
	}

	if (start == 0)
	{
		if (!IsAnimatingTable)

			checkgame();

		{
			//바닥
			glTranslatef(0, 4, -12);
			glColor3f(1, 1, 0.8);
			glBegin(GL_QUADS);
			glNormal3f(0, 1, 0); // 위로 1칸
			glVertex3f(-40, 0, -50);
			glVertex3f(40, 0, -50);
			glVertex3f(40, 0, 50);
			glVertex3f(-40, 0, 50);
			glEnd();

			glColor3f(0.2, 0.7, 0.3);
			glTranslatef(0, 8, 0);
		}
		//당구대
		{

			glBegin(GL_QUADS);
			glNormal3f(1, 1, 0); // 위로 1칸
			glVertex3f(-8.5, 0, -11.5);
			glVertex3f(8.5, 0, -11.5);
			glVertex3f(8.5, 0, 11.5);
			glVertex3f(-8.5, 0, 11.5);
			glEnd();

			//Table Legs 
			glColor3f(0.2, 0.2, 0.5);

			glTranslatef(-8.5, 0, 11.5);
			cube();
			glTranslatef(0, 0, -23);
			cube();
			glTranslatef(17, 0, 0);
			cube();
			glTranslatef(0, 0, 23);
			cube();

			glTranslatef(-8.5, 0, -11.5);  // 0포인트
		}
		 print_score();
		//벽 (4면)
		{
			glColor3f(0.6, 0.6, 0.6);
			glBegin(GL_QUADS);
			glNormal3f(0, 1, 0);
			glVertex3f(-40, -16, -50);
			glVertex3f(40, -16, -50);
			glVertex3f(40, 40, -50);
			glVertex3f(-40, 40, -50);
			glEnd();

			glBegin(GL_QUADS);
			glNormal3f(0, 1, 0);
			glVertex3f(-40, -16, -50);
			glVertex3f(-40, 40, -50);
			glVertex3f(-40, 40, 50);
			glVertex3f(-40, -16, 50);
			glEnd();

			glBegin(GL_QUADS);
			glNormal3f(0, 1, 0);
			glVertex3f(40, -16, -50);
			glVertex3f(40, 40, -50);
			glVertex3f(40, 40, 50);
			glVertex3f(40, -16, 50);
			glEnd();

			glBegin(GL_QUADS);
			glNormal3f(0, 1, 0);
			glVertex3f(-40, -16, 50);
			glVertex3f(40, -16, 50);
			glVertex3f(40, 40, 50);
			glVertex3f(-40, 40, 50);
			glEnd();
		}

		//벽(블록)
		for (int i = 0; i < 4; i++) {
			glTranslatef(blocks[i].x, 0, blocks[i].z);
			draw_block(blocks[i]);
			glTranslatef(-blocks[i].x, 0, -blocks[i].z);
		}

		//구멍
		for (int i = 0; i < 6; i++)
		{
			draw_Hole(holes[i]);
		}

		//공
		glTranslatef(1, 0.3, 1);

		for (int i = 0; i < arrlenght; i++)
		{
			glTranslatef(balls[i].x, balls[i].y, balls[i].z);
			color_ball(balls[i].red, balls[i].green, balls[i].blue);
			glTranslatef(-balls[i].x, -balls[i].y, -balls[i].z);
		}

		glTranslatef(0, -0.3, 0);
	}

	glutSwapBuffers();

}
void Checkflag(int i)  // 구멍에 맞았을때 공 체크
{
	if (balls[i].onTable == 0) {   // 게임상에 있을때 공체크

		for (int j = 0; j < 5; j++) {
			dis = sqrt(pow(balls[i].x - (holes[j].x), 2) + pow(balls[i].z - (holes[j].z), 2));
			if (dis < 0.9) {
				score += holes[j].score;
				if (holes[j].red == 1) {
					balls[i].onTable = 2;
					balls[i].status = 0;
					printf("%d\n", score);
				}
				else {
					balls[i].x = 0;
					balls[i].z = -7.5;
					fRight[i] = 0;
					fLeft[i] = 0;
					fDown[i] = 0;
					fUp[i] = 0;
					printf("%d\n", score);
				}
			}
		}
	}
}
// 충돌 점검
// 각 볼에 있는측면(fleft, fright, fDown, fUp)
// 반사설정후 공움직임
void Idle()
{
	isVColliding = isHColliding = 0;
	for (int i = 0; i < arrlenght; i++) {
		// 두 기능 모두 충돌한 측(좌, 우)을 나타내는 숫자를 반환함(상, 하)
		isVColliding = checkCollisionVertical(balls[i]);// 체크 볼이 블록과 수직으로 충돌함을 체크
		isHColliding = checkCollisionHorizontal(balls[i]); // 볼이 수평으로 블록과 충돌함을 체크
		Checkflag(i);   // 구멍에 공 부딪힘 체크
		if (balls[i].onTable == 0) {            /// 공이 당구대에 계속위치함
			if (fRight[i])             // 각공은 자신이 설정한대로감
			{
				// 공이 게임안에 있을시
				// 블록과 충돌할떄 까지
				if (balls[i].status == 1 && move_x(i) == -1)
					//  수직+수평 충돌 추가, 왼쪽 & 위
					if (balls[i].x >= 7.7 || isHColliding == 1) {
						fLeft[i] = 1;
						fRight[i] = 0;
					}
					else {
						balls[i].x += speed;
					}
				// 공이 게임상에 있고 충돌할시
				if (balls[i].status == 1 && move_x(i) != -1) {
					temp = move_x(i);
					balls[temp].status = 1;
					fRight[temp] = 1;
					fLeft[temp] = 0;
					reflex = 1;
					balls[i].x -= speed;
					fLeft[i] = 1;
					fRight[i] = 0;

					if (fUp[i] == 1)
						fUp[temp] = 1;
					if (fDown[i] == 1)
						fDown[temp] = 1;
				}
			}
			if (fLeft[i])
			{
				if (balls[i].status == 1 && move_x(i) == -1)
					if (balls[i].x <= -7.7 || isHColliding == 2) {
						fLeft[i] = 0;
						fRight[i] = 1;
					}
					else {
						balls[i].x -= speed;
					}

				if (balls[i].status == 1 && move_x(i) != -1) {
					temp = move_x(i);
					balls[temp].status = 1;
					fRight[temp] = 0;
					fLeft[temp] = 1;
					reflex = 1;
					balls[i].x += speed;
					fLeft[i] = 0;
					fRight[i] = 1;
					if (fUp[i] == 1)
						fUp[temp] = 1;
					if (fDown[i] == 1)
						fDown[temp] = 1;
				}
			}
			if (fUp[i])
			{
				if (balls[i].status == 1 && move_x(i) == -1)
					if (balls[i].z <= -10.7 || isVColliding == 3) {
						fUp[i] = 0;
						fDown[i] = 1;
					}
					else
					{
						balls[i].z -= speed;
					}
				if (balls[i].status == 1 && move_x(i) != -1) {
					temp = move_x(i);
					balls[temp].status = 1;
					fUp[temp] = 1;
					fDown[temp] = 0;
					balls[i].z += speed;
					reflex = 1;
					fDown[i] = 1;
					fUp[i] = 0;

					if (fLeft[i] == 1)
						fLeft[temp] = 1;
					if (fRight[i] == 1)
						fRight[temp] = 1;
				}
			}
			if (fDown[i])
			{
				if (balls[i].status == 1 && move_x(i) == -1)
					if (balls[i].z >= 10.7 || isVColliding == 4)
					{
						fUp[i] = 1;
						fDown[i] = 0;
					}
					else
					{
						balls[i].z += speed;
					}
				if (balls[i].status == 1 && move_x(i) != -1) {

					temp = move_x(i);
					balls[temp].status = 1;
					fUp[temp] = 0;
					fDown[temp] = 1;
					balls[i].z -= speed;
					reflex = 1;
					fDown[i] = 0;
					fUp[i] = 1;
					if (fLeft[i] == 1)
						fLeft[temp] = 1;
					if (fRight[i] == 1)
						fRight[temp] = 1;
				}
			}
		}
		// 공이 테이블에 고정됨
		if (balls[i].onTable == 2)
		{

			balls[i].y = balls[i].y - 0.002;

			if (balls[i].y < -7.7)
				balls[i].onTable = 1;
		}
	}

	if (reflex) {            // 공이 다른 볼에 부딪혔을 경우=1이 속도를 내기 시작하면 얼마 후 정지한다
		if (velocity > 0) {
			if (IsSpeeding == 0) {
				defSpeed = speed;   //속도 저장
				printf("%f\n", defSpeed);
				IsSpeeding = 1;
				printf("here\n");
			}
			velocity -= defSpeed;
			speed = speed - (0.0007*speed);
			if (CanSpeed && velocity < 10) {
				balls[selected_Ball].status = 0;
				CanSpeed = 0;
			}
		}
		else {     // 공 멈춤 설정
			speed = defSpeed;   //속도 반환
			velocity = 15;
			CanSpeed = 1;
			IsSpeeding = 0;
			StopBalls();
			reflex = 0;
		}
	}
	draw();
}

int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); // 이중버퍼,z-버퍼
	glutInitWindowSize(600, 600); // 픽셀단위
	glutCreateWindow("3D_BILLIARDS_GAME");
	init();
	glutDisplayFunc(draw); // 디스플레이 기능
	glutKeyboardFunc(keyboard); // 키보드 기능
	init_ball(); // 당구공 그림
	init_holes(); // 구멍 그림
	init_blocks(); // 안팎벽 그림
	glutIdleFunc(Idle);
	glutMainLoop(); // 메인이벤트 루프 시작

	return 0;

}
// OpenGL 파라미터
void init()
{
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60, 1.0, 0.1, 100);
	glMatrixMode(GL_MODELVIEW);

	// 조명 파라미터

	GLfloat mat_ambdif[] = { 1.0,2.0, 0.0, 1.0 };
	GLfloat mat_specular[] = { 0.0, 0.0, 0.0, 1.0 };
	GLfloat mat_shininess[] = { 80.0 };
	GLfloat light_position[] = { 0.0, 5.0, 0.0, 1.0 };
	glClearColor(0.0, 0.0, 0.0, 0.0);

	glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_ambdif); // 두가지 모두 갖춤
	glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); // 구체화
	glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); // 광채
	glLightfv(GL_LIGHT0, GL_POSITION, light_position); // 빛 위치 설정
	glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); // material 변경 , color3f

	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glEnable(GL_COLOR_MATERIAL);
	glEnable(GL_DEPTH_TEST);
}
// 당구대 그리는것
// 블록으로 전환
void cube()
{
	glBegin(GL_QUADS);
	// 앞면
	glNormal3f(0, 0, 1);
	glVertex3f(-0.5, 0, 0.5);
	glVertex3f(-0.5, -8, 0.5);
	glVertex3f(0.5, -8, 0.5);
	glVertex3f(0.5, 0, 0.5);

	// 뒷면
	glNormal3f(0, 0, 1);
	glVertex3f(-0.5, 0, -0.5);
	glVertex3f(0.5, 0, -0.5);
	glVertex3f(0.5, -8, -0.5);
	glVertex3f(-0.5, -8, -0.5);

	// 좌측면
	glNormal3f(1, 0, 0);
	glVertex3f(-0.5, 0, 0.5);
	glVertex3f(-0.5, -8, 0.5);
	glVertex3f(-0.5, -8, -0.5);
	glVertex3f(-0.5, 0, -0.5);

	// 우측면
	glNormal3f(1, 0, 0);
	glVertex3f(0.5, 0, 0.5);
	glVertex3f(0.5, 0, -0.5);
	glVertex3f(0.5, -8, -0.5);
	glVertex3f(0.5, -8, 0.5);
	glEnd();
}
// 스크린 상 블록
void draw_block(Block block)
{
	glColor3f(1.0, 0.1, 0.1);
	glBegin(GL_QUADS);

	//앞
	glNormal3f(0, 0, 1);
	glVertex3f(-block.w, 0, block.h);
	glVertex3f(-block.w, 0.6, block.h);
	glVertex3f(block.w, 0.6, block.h);
	glVertex3f(block.w, 0, block.h);

	//뒤
	glNormal3f(0, 0, 1);
	glVertex3f(-block.w, 0, -block.h);
	glVertex3f(block.w, 0.6, -block.h);
	glVertex3f(block.w, 0.6, -block.h);
	glVertex3f(-block.w, 0, -block.h);

	//좌
	glNormal3f(-1, 0, 0);
	glVertex3f(-block.w, 0, block.h);
	glVertex3f(-block.w, 0.6, block.h);
	glVertex3f(-block.w, 0.6, -block.h);
	glVertex3f(-block.w, 0, -block.h);

	//우
	glNormal3f(1, 0, 0);
	glVertex3f(block.w, 0, block.h);
	glVertex3f(block.w, 0, -block.h);
	glVertex3f(block.w, 0.6, -block.h);
	glVertex3f(block.w, 0.6, block.h);

	//위
	glNormal3f(1, 0, 0);
	glVertex3f(block.w, 0.6, block.h);
	glVertex3f(block.w, 0.6, -block.h);
	glVertex3f(-block.w, 0.6, -block.h);
	glVertex3f(-block.w, 0.6, block.h);

	glEnd();
}
// 4개의  블록 , 큰면안에 위치
//변수 너비와 높이를 설정하고 숫자를 교체할것!!
void init_blocks()
{
	//쿠션 4방향
	blocks[0] = { 0.0f, -11.5f, 9.0f, 0.5f, 0 };
	blocks[1] = { 0.0f, 11.5f, 9.0f, 0.5f, 0 };
	blocks[2] = { 8.5f, 0.0f, 0.5f, 12.0f, 0 };
	blocks[3] = { -8.5f, 0.0f, 0.5f, 12.0f, 0 };

	//추가블록 밑에
	blocks[4] = { -5.0f, -7.0f, 3.5f, 1.0f, 2 };
	blocks[5] = { -5.0f,  6.5f, 3.5f, 1.0f, 2 };
	blocks[6] = { 5.0f,  6.5f, 3.5f, 1.0f, 2 };
	blocks[7] = { 0.0f, -1.0f, 3.5f, 1.0f, 2 };
}

// 스크린 상 공의 위치,색상
void init_ball()
{
	balls[0] = { -0.5f , 0.0f, 5.15f, 1.0, 1.0, 1.0, 0,0 };
	balls[1] = { -0.5f, 0.0f, -5.15f, 1.0, 0.0, 0.0, 0, 0 };
	balls[2] = { 0.1f, 0.0f, -6.27f, 1.0, 0.0, 0.0, 0,0 };
	balls[3] = { -1.1f, 0.0f, -6.27f, 1.0, 0.0, 0.0, 0,0 };
	balls[4] = { 0.7f, 0.0f, -7.39f, 1.0, 0.0, 0.0, 0,0 };
	balls[5] = { -0.5f, 0.0f, -7.39f, 1.0, 0.0, 0.0, 0,0 };
	balls[6] = { -1.7f, 0.0f,-7.39f, 1.0, 0.0, 0.0, 0,0 };
	balls[7] = { 1.3f, 0.0f, -8.51f, 1.0, 0.0, 0.0, 0,0 };
	balls[8] = { 0.1f, 0.0f, -8.51f, 1.0, 0.0, 0.0, 0,0 };
	balls[9] = { -1.1 , 0.0f, -8.51f, 1.0, 0.0, 0.0, 0,0 };
	balls[10] = { -2.3f, 0.0f, -8.51f, 1.0, 0.0, 0.0 , 0,0 };
	balls[11] = { 1.9f, 0.0f, -9.63f, 1.0, 0.0, 0.0, 0,0 };
	balls[12] = { 0.7f, 0.0f, -9.63f, 1.0, 0.0, 0.0, 0,0 };
	balls[13] = { -0.5f, 0.0f, -9.63f, 1.0, 0.0, 0.0, 0,0 };
	balls[14] = { -1.7f, 0.0f, -9.63f, 1.0, 0.0, 0.0, 0,0 };
	balls[15] = { -2.9f, 0.0f, -9.63f, 1.0, 0.0, 0.0, 0,0 };
}
void init_holes() {
	holes[0] = { 0.0f, 0.0f, 0.0f, 7.3f, 0.1f, 10.3f, 0 };
	holes[1] = { 0.0f, 0.0f, 0.0f, -7.3f, 0.1f, 10.3f, 0 };
	holes[2] = { 0.0f, 0.0f, 0.0f, 7.3f, 0.1f, 0.3f, 0 };
	holes[3] = { 0.0f, 0.0f, 0.0f, -7.3f, 0.1f, 0.3f, 0 };
	holes[4] = { 0.0f, 0.0f, 0.0f, -7.3f, 0.1f, -10.3f, 0 };
	holes[5] = { 0.0f, 0.0f, 0.0f, 7.3f, 0.1f, -10.3f, 0 };
}
void draw_Hole(Hole hole) {
	glColor3f(hole.red, hole.green, hole.blue);
	glTranslatef(hole.x, hole.y, hole.z);
	glBegin(GL_POLYGON);
	for (int i = 0; i <= 720; i++) {
		aC = 3.14 * i;
		xC = 0.7 * cos(aC / 360);
		zC = 0.7 * sin(aC / 360);
		glVertex3d(xC, 0, zC);
	}
	glEnd();
	glTranslatef(-hole.x, -hole.y, -hole.z);
}
void color_ball(float red, float green, float blue)
{
	glColor3f(red, green, blue);
	glutSolidSphere(0.6, 32, 32);
}

ps.
I’d appreciate it if you could understand me a little bit, even if the phrase you’re asking is strange.
I am using a translator.

osito,
you could cover a top-menu-rectangle in secreespace-coordinates if you cannot use glViewport() to separate menu- and game-areas. You’ll have to set the perspective to glOrtho() using the window-rectangle dims as arguments. That should make it possible to write something there.
As for a menu, I belive that glut has a (fixed-size?) out-of-the-box menu-box … you should look up info on how to use it. I seem to recall that it’s not a top-notch solution, but writing your own will be ever so cumbersome.
My glut-experience is very limited, so don’t expect my suggestions for more than it is…