Ayuda con programa en c++

#1
Tengo 3 codigos de juegos (snake, gato y ahorcado), necesito unirlos en un solo programa con un menu, ya lo intente con funciones pero no puedo. Alguien me podria ayudar?
Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include<string.h>
using namespace std;
void primero(void);
void segundo(void);
void tercero (void);
int main(void)
{
int x;
    printf("\t\t\tElija una opcion\n\n");
    printf(" 1 Ahorcado\n");
    printf(" 2 Gato\n");
    printf(" 3 Snake\n");
    cin>>x;

  if (x==1)
  {primero();}
  else
  if (x==2)
   {segundo();}
   else
    if (x==3)
   {
       tercero ();
   }

   return EXIT_SUCCESS;
}



void primero(void)
{

    char frase[60],rep[100],temporal[100];
    char pal;
    int longitud,i,j,inicial,acertado=0,temp=0,oportunidades=5;
    int repetido=0,gano=0;

    printf("\tJuego del Ahorcado\n");
    printf("Introduzca la palabra a adivinar: ");
    gets(frase);

    system("cls");

    longitud = 0;
    inicial = 0;
    j = 0;

    rep[0] = ' ';
    rep[1] = '\0';


    do {
                system("cls");
        temp=0;

        if(inicial == 0) {
         for(i=0;i<strlen(frase);i++) {
          if(frase[i] == ' ') {
            temporal[i] = ' ';
             longitud++;
          }
          else {
             temporal[i] = '_';
             longitud++;
          }
         }
        }

        inicial = 1;

        temporal[longitud] = '\0';

        for(i=0;i<strlen(rep);i++) {
           if(rep[i] == pal) {
            repetido = 1;
            break;
          }
          else {
           repetido = 0;
         }
        }

        if(repetido == 0) {
         for(i=0;i<strlen(frase);i++) {
                    if(frase[i] == pal) {
             temporal[i] = pal;
              acertado++;
              temp=1;
            }
          }
        }

        if(repetido == 0) {
         if(temp == 0) {
           oportunidades = oportunidades - 1;
         }
        }
        else {
         printf("Ya se ha introducido este caracter");
         printf("\n\n");
        }

        printf("\n");

        for(i=0;i<strlen(temporal);i++) {
         printf(" %c ",temporal[i]);
        }

        printf("\n");

        if(strcmp(frase,temporal) == 0) {
            gano = 1;
            break;
        }

        printf("\n");
        printf("Letras Acertadas: %d",acertado);
        printf("\n");
        printf("Oportunidades Restantes: %d",oportunidades);
        printf("\n");

        rep[j] = pal;
        j++;

        if (oportunidades==0)
        {
           break;
        }

        printf("Introduzca una letra:");
        scanf("\n%c",&pal);

    }while(oportunidades != 0);


    if(gano) {
                printf("\n\n");
        printf("Enhorabuena, has ganado.");
    }
    else {
                printf("\n\n");
        printf("Has perdido.");
    }

    printf("\n\n");
    system("PAUSE");


}





void segundo(void)
{
        int jugador=1,error,empate=0,ganar=0;
        char c1='1',c2='2',c3='3',c4='4',c5='5',c6='6',c7='7',c8='8',c9='9',tiro,marca,respuesta='y';

        do{

          error=1;

          system("cls");

          printf("JUEGO DEL TRES EN RAYA\n");
          printf("\n %c | %c | %c\n",c1,c2,c3);
          printf("---+---+---\n");
          printf("\n %c | %c | %c\n",c4,c5,c6);
          printf("---+---+---\n");
          printf("\n %c | %c | %c\n\n",c7,c8,c9);

          if(jugador==1)
          {
           marca='X';
          }

          else
          {
           marca='O';
          }

          printf("Turno del Jugador %d.",jugador);
          printf("\nEscribe la posicion donde colocas la ficha: ");

          fflush(stdin);

          scanf("%c",&tiro);

          if (tiro=='1' && c1=='1') {c1=marca;}
          else if (tiro=='2' && c2=='2') {c2=marca;}
          else if (tiro=='3' && c3=='3') {c3=marca;}
          else if (tiro=='4' && c4=='4') {c4=marca;}
          else if (tiro=='5' && c5=='5') {c5=marca;}
          else if (tiro=='6' && c6=='6') {c6=marca;}
          else if (tiro=='7' && c7=='7') {c7=marca;}
          else if (tiro=='8' && c8=='8') {c8=marca;}
          else if (tiro=='9' && c9=='9') {c9=marca;}
          else {printf("Error! Movimiento No Valido\n"); error=2;}

          if(c1=='X'||c1=='O')

          {

            if(c2==c1&&c3==c1)
             {
              ganar=1;
             }

            if(c4==c1&&c7==c1)
             {
              ganar=1;
             }
          }

          if(c5=='X'||c5=='O')
          {
                   if (c1 == c5 && c9 == c5)
                           {ganar=1;}
                   if (c2 == c5 && c8 == c5)
                           {ganar=1;}
                   if (c4 == c5 && c6 == c5)
                           {ganar=1;}
                   if (c3 == c5 && c7 == c5)
                           {ganar=1;}
            }

          if(c9=='X'||c9=='O')
          {
                     if (c6 == c9 && c3 == c9)
                             {ganar=1;}
                     if (c7 == c9 && c8 == c9)
                            {ganar=1;}
          }

          if ((c1 != '1' && c2 != '2' && c3 != '3' &&
              c4 != '4' && c5 != '5' && c6 != '6' &&
              c7 != '7' && c8 != '8' && c9 != '9') &&
              ganar == 0)
          {
              empate=1;
          }

          if (ganar==1||empate==1)
          {
              system("cls");
              if (ganar==1)
              {
                  printf("Jugador: %d Gana!\n\n",jugador);
                  printf("\n %c | %c | %c\n",c1,c2,c3);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n",c4,c5,c6);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n\n",c7,c8,c9);
              }

              if (empate==1)
              {
                  printf("Empate!\n",jugador);
                  printf("\n %c | %c | %c\n",c1,c2,c3);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n",c4,c5,c6);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n\n",c7,c8,c9);
              }

              printf("Jugar de Nuevo: Y/N ?\n");

              fflush(stdin);

              scanf("%c",&respuesta);

              if (respuesta=='y'||respuesta=='Y')
              {
                      empate=0;
                      jugador=2;
                      ganar=0;
                      c1='1';
                      c2='2';
                      c3='3';
                      c4='4';
                      c5='5';
                      c6='6';
                      c7='7';
                      c8='8';
                      c9='9';
              }
          }

          if(error==1)
          {
              if (jugador==1)
              {
               jugador=2;
              }
              else
              {
               jugador=1;
              }
          }

  }while(respuesta=='y'||respuesta=='Y');

}
void tercero(void)

{


#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27

using namespace std;

int cuerpo[200][2];
int n = 1, tam = 10, dir = 3;
int x = 10, y = 12;
int xc = 30, yc = 15;
int velocidad = 60;
char tecla;

void gotoxy(int x, int y)
{
    HANDLE hCon;
    COORD dwPos;

    dwPos.X = x;
    dwPos.Y = y;
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hCon,dwPos);
}
void OcultaCursor() {
    CONSOLE_CURSOR_INFO cci = {100, FALSE};

    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
void pintar(){
     for(int i=2; i < 78; i++){
        gotoxy (i, 3); printf ("%c", 205);
        gotoxy(i, 23); printf ("%c", 205);
        }
     for(int v=4; v < 23; v++){
        gotoxy (2,v);  printf ("%c", 186);
        gotoxy(77,v);  printf ("%c", 186);
        }
     gotoxy  (2,3);    printf ("%c", 201);
     gotoxy (2,23);    printf ("%c", 200);
     gotoxy (77,3);    printf ("%c", 187);
     gotoxy(77,23);    printf ("%c", 188);
     }
void guardar_posicion(){
     cuerpo[n][0] = x;
     cuerpo[n][1] = y;
     n++;
     if(n == tam) n = 1;
}
void dibujar_cuerpo(){
      for(int i = 1; i < tam; i++){
      gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
     }
}
void borrar_cuerpo(){
     gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
    }
void teclear(){
     if(kbhit()){
            tecla = getch();
            switch(tecla){
                case ARRIBA : if(dir != 2) dir = 1; break;
                case ABAJO : if(dir != 1) dir = 2; break;
                case DERECHA : if(dir != 4) dir = 3; break;
                case IZQUIERDA : if(dir != 3) dir = 4; break;
           }
     }
}
void comida()
{
     if(x == xc && y == yc)
     {
          xc = (rand() % 73) + 4;
          yc = (rand() % 19) + 4;

          tam++;
          gotoxy(xc, yc); printf("%c", 4);
     }
}
bool game_over()
{
     if(y == 3 || y == 23 || x == 2 || x == 77) return false;
     for(int j = tam - 1; j > 0; j--){
             if(cuerpo[j][0] == x &&  cuerpo[j][1] == y)
             return false;
     }
    return true;
}
int main()
{
    OcultaCursor();

    pintar();
   gotoxy(xc, yc); printf("%c", 4);

    while(tecla != ESC && game_over())
    {
         borrar_cuerpo();
         guardar_posicion();
         dibujar_cuerpo();
         comida();
         teclear();
         teclear();

         if(dir == 1) y--;
         if(dir == 2) y++;
         if(dir == 3) x++;
         if(dir == 4) x--;

         Sleep(velocidad);
         }
    pintar();
    return 0;
}
}
 
#2
Simplemente debes de mover algunas cosas, espero y aun te sea util:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include<string.h>

#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27


using namespace std;
void primero(void);
void segundo(void);
void tercero (void);



int cuerpo[200][2];
int n = 1, tam = 10, dir = 3;
int x = 10, y = 12;
int xc = 30, yc = 15;
int velocidad = 60;
char tecla;

void gotoxy(int x, int y)
{
    HANDLE hCon;
    COORD dwPos;

    dwPos.X = x;
    dwPos.Y = y;
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hCon,dwPos);
}
void OcultaCursor() {
    CONSOLE_CURSOR_INFO cci = {100, FALSE};

    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
void pintar(){
     for(int i=2; i < 78; i++){
        gotoxy (i, 3); printf ("%c", 205);
        gotoxy(i, 23); printf ("%c", 205);
        }
     for(int v=4; v < 23; v++){
        gotoxy (2,v);  printf ("%c", 186);
        gotoxy(77,v);  printf ("%c", 186);
        }
     gotoxy  (2,3);    printf ("%c", 201);
     gotoxy (2,23);    printf ("%c", 200);
     gotoxy (77,3);    printf ("%c", 187);
     gotoxy(77,23);    printf ("%c", 188);
     }
void guardar_posicion(){
     cuerpo[n][0] = x;
     cuerpo[n][1] = y;
     n++;
     if(n == tam) n = 1;
}
void dibujar_cuerpo(){
      for(int i = 1; i < tam; i++){
      gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
     }
}
void borrar_cuerpo(){
     gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
    }
void teclear(){
     if(kbhit()){
            tecla = getch();
            switch(tecla){
                case ARRIBA : if(dir != 2) dir = 1; break;
                case ABAJO : if(dir != 1) dir = 2; break;
                case DERECHA : if(dir != 4) dir = 3; break;
                case IZQUIERDA : if(dir != 3) dir = 4; break;
           }
     }
}
void comida()
{
     if(x == xc && y == yc)
     {
          xc = (rand() % 73) + 4;
          yc = (rand() % 19) + 4;

          tam++;
          gotoxy(xc, yc); printf("%c", 4);
     }
}
bool game_over()
{
     if(y == 3 || y == 23 || x == 2 || x == 77) return false;
     for(int j = tam - 1; j > 0; j--){
             if(cuerpo[j][0] == x &&  cuerpo[j][1] == y)
             return false;
     }
    return true;
}

int main(void)
{
int x;
    printf("\t\t\tElija una opcion\n\n");
    printf(" 1 Ahorcado\n");
    printf(" 2 Gato\n");
    printf(" 3 Snake\n");
    cin>>x;

  if (x==1)
  {primero();}
  else
  if (x==2)
   {segundo();}
   else
    if (x==3)
   {
       tercero ();
   }

   return EXIT_SUCCESS;
}



void primero(void)
{

    char frase[60],rep[100],temporal[100];
    char pal;
    int longitud,i,j,inicial,acertado=0,temp=0,oportunidades=5;
    int repetido=0,gano=0;

    printf("\tJuego del Ahorcado\n");
    printf("Introduzca la palabra a adivinar: ");
    gets(frase);

    system("cls");

    longitud = 0;
    inicial = 0;
    j = 0;

    rep[0] = ' ';
    rep[1] = '\0';


    do {
                system("cls");
        temp=0;

        if(inicial == 0) {
         for(i=0;i<strlen(frase);i++) {
          if(frase[i] == ' ') {
            temporal[i] = ' ';
             longitud++;
          }
          else {
             temporal[i] = '_';
             longitud++;
          }
         }
        }

        inicial = 1;

        temporal[longitud] = '\0';

        for(i=0;i<strlen(rep);i++) {
           if(rep[i] == pal) {
            repetido = 1;
            break;
          }
          else {
           repetido = 0;
         }
        }

        if(repetido == 0) {
         for(i=0;i<strlen(frase);i++) {
                    if(frase[i] == pal) {
             temporal[i] = pal;
              acertado++;
              temp=1;
            }
          }
        }

        if(repetido == 0) {
         if(temp == 0) {
           oportunidades = oportunidades - 1;
         }
        }
        else {
         printf("Ya se ha introducido este caracter");
         printf("\n\n");
        }

        printf("\n");

        for(i=0;i<strlen(temporal);i++) {
         printf(" %c ",temporal[i]);
        }

        printf("\n");

        if(strcmp(frase,temporal) == 0) {
            gano = 1;
            break;
        }

        printf("\n");
        printf("Letras Acertadas: %d",acertado);
        printf("\n");
        printf("Oportunidades Restantes: %d",oportunidades);
        printf("\n");

        rep[j] = pal;
        j++;

        if (oportunidades==0)
        {
           break;
        }

        printf("Introduzca una letra:");
        scanf("\n%c",&pal);

    }while(oportunidades != 0);


    if(gano) {
                printf("\n\n");
        printf("Enhorabuena, has ganado.");
    }
    else {
                printf("\n\n");
        printf("Has perdido.");
    }

    printf("\n\n");
    system("PAUSE");


}





void segundo(void)
{
        int jugador=1,error,empate=0,ganar=0;
        char c1='1',c2='2',c3='3',c4='4',c5='5',c6='6',c7='7',c8='8',c9='9',tiro,marca,respuesta='y';

        do{

          error=1;

          system("cls");

          printf("JUEGO DEL TRES EN RAYA\n");
          printf("\n %c | %c | %c\n",c1,c2,c3);
          printf("---+---+---\n");
          printf("\n %c | %c | %c\n",c4,c5,c6);
          printf("---+---+---\n");
          printf("\n %c | %c | %c\n\n",c7,c8,c9);

          if(jugador==1)
          {
           marca='X';
          }

          else
          {
           marca='O';
          }

          printf("Turno del Jugador %d.",jugador);
          printf("\nEscribe la posicion donde colocas la ficha: ");

          fflush(stdin);

          scanf("%c",&tiro);

          if (tiro=='1' && c1=='1') {c1=marca;}
          else if (tiro=='2' && c2=='2') {c2=marca;}
          else if (tiro=='3' && c3=='3') {c3=marca;}
          else if (tiro=='4' && c4=='4') {c4=marca;}
          else if (tiro=='5' && c5=='5') {c5=marca;}
          else if (tiro=='6' && c6=='6') {c6=marca;}
          else if (tiro=='7' && c7=='7') {c7=marca;}
          else if (tiro=='8' && c8=='8') {c8=marca;}
          else if (tiro=='9' && c9=='9') {c9=marca;}
          else {printf("Error! Movimiento No Valido\n"); error=2;}

          if(c1=='X'||c1=='O')

          {

            if(c2==c1&&c3==c1)
             {
              ganar=1;
             }

            if(c4==c1&&c7==c1)
             {
              ganar=1;
             }
          }

          if(c5=='X'||c5=='O')
          {
                   if (c1 == c5 && c9 == c5)
                           {ganar=1;}
                   if (c2 == c5 && c8 == c5)
                           {ganar=1;}
                   if (c4 == c5 && c6 == c5)
                           {ganar=1;}
                   if (c3 == c5 && c7 == c5)
                           {ganar=1;}
            }

          if(c9=='X'||c9=='O')
          {
                     if (c6 == c9 && c3 == c9)
                             {ganar=1;}
                     if (c7 == c9 && c8 == c9)
                            {ganar=1;}
          }

          if ((c1 != '1' && c2 != '2' && c3 != '3' &&
              c4 != '4' && c5 != '5' && c6 != '6' &&
              c7 != '7' && c8 != '8' && c9 != '9') &&
              ganar == 0)
          {
              empate=1;
          }

          if (ganar==1||empate==1)
          {
              system("cls");
              if (ganar==1)
              {
                  printf("Jugador: %d Gana!\n\n",jugador);
                  printf("\n %c | %c | %c\n",c1,c2,c3);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n",c4,c5,c6);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n\n",c7,c8,c9);
              }

              if (empate==1)
              {
                  printf("Empate!\n",jugador);
                  printf("\n %c | %c | %c\n",c1,c2,c3);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n",c4,c5,c6);
                  printf("---+---+---\n");
                  printf("\n %c | %c | %c\n\n",c7,c8,c9);
              }

              printf("Jugar de Nuevo: Y/N ?\n");

              fflush(stdin);

              scanf("%c",&respuesta);

              if (respuesta=='y'||respuesta=='Y')
              {
                      empate=0;
                      jugador=2;
                      ganar=0;
                      c1='1';
                      c2='2';
                      c3='3';
                      c4='4';
                      c5='5';
                      c6='6';
                      c7='7';
                      c8='8';
                      c9='9';
              }
          }

          if(error==1)
          {
              if (jugador==1)
              {
               jugador=2;
              }
              else
              {
               jugador=1;
              }
          }

  }while(respuesta=='y'||respuesta=='Y');

}
void tercero(void)

{
system("cls");
    OcultaCursor();

    pintar();
   gotoxy(xc, yc); printf("%c", 4);

    while(tecla != ESC && game_over())
    {
         borrar_cuerpo();
         guardar_posicion();
         dibujar_cuerpo();
         comida();
         teclear();
         teclear();

         if(dir == 1) y--;
         if(dir == 2) y++;
         if(dir == 3) x++;
         if(dir == 4) x--;

         Sleep(velocidad);
         }
    pintar();
  

}
 
Arriba