Listados de usuarios

Iniciado por dragonlady, 12 Julio 2015, 17:20 PM

0 Miembros y 2 Visitantes están viendo este tema.

dragonlady

Buenas, tengo una consulta si alguien me puede ayudar de un programa que vengo haciendo hace bastante (y ya he consultado varias cosas, esto de trabajar en grupo de 1 está complicado), estoy tratando de mostrar una lista de los usuarios(jugadores) activos, y tengo que mostrar cierta información de los mismos.
Mi idea fue algo así,
Hago un Switch con estas opciones dentro (que son los distintos listados que tendría que hacer):


void Consultas()
{
   system("cls");
   jugador jugadores[CANTJUG];
                   //inicializo todo el arreglo
   int i;
   for (i=0; i<CANTJUG;i++)
   {
       inicializo(jugadores,i);
   }

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Listado de jugadores\n");
   printf("2-Listado de todas las partidas\n");
   printf("3-Listado de partidas por jugador\n");
   printf("4-Listado de partidas por fecha\n");
   printf("5-Fin del Programa\n");
   printf("\n\n");
   char p;
   printf (">>Presiona cualquier tecla y enter para volver al menu ");
   scanf (" %c",&p);

   int op;
   op = ingopcion();

   while (op!=5)
   {
       switch (op)
       {
           case 1:
                   int i, j;
                   j=0;
                   for (i=0; i<j; i++)
                   puts(jugador jugadores[CANTJUG].cedula.numero[i]);
                   puts(jugador jugadores[CANTJUG].nombre.palabra[i]);
                   puts(jugador jugadores[CANTJUG].apellido.palabra[i]);
                   puts(jugador jugadores[CANTJUG].alias.palabra[i]);
                   break;
           case 2:
                   listado_partidas;
                   break;
           case 3:
                   listado_partidas_xjugador;
                   break;
           case 4:
                   listado_partidas_xfecha;
                   break;
           case 5: fin_juego();
                   break;
       }

   }
}


Y me tira estos errores:

||In function 'Consultas':|
|974|error: a label can only be part of a statement and a declaration is not a statement|
|977|error: expected expression before 'jugador'|
|978|error: expected expression before 'jugador'|
|979|error: expected expression before 'jugador'|
|980|error: expected expression before 'jugador'|


No me está saliendo poner el puts, no se si es porque no conseguí esos datos con un gets, entonces que podría poner en vez de puts? :(


ivancea96

Puedes poner printf().

En cualquier caso, el error es, que has puesto:
puts(jugador jugadores[CANTJUG].cedula.numero[i]);

no tienes que poner jugador delante.
puts(jugadores[...]....)

Y has puesto:
j=0;
for (i=0; i<j; i++)


Ese bucle nunca se va a reproducir. De cualqueir modo, no pusiste llaves encerrando los puts, así que ese bucle solo afectaría al primer puts.

A parte, has puesto jugadores[CANTJUG]. Dado que el arreglo tiene ese tamaño, acceder a esa dirección, o te tira basura, o te error en tiempo de ejecución. Habrás querido decir jugadores, pero en cualquier caso, el índice i va a ser siempre 0.

dragonlady

Hola gracias por contestar.
Ya había intentando algunos cambios que me sugeriste, pero sigue sin salirme. No estoy entendiendo lo de [CANTJUG] porque no se que poner.

void Consultas()
{
    system("cls");
    jugador jugadores[CANTJUG];
                    //inicializo todo el arreglo
    int i;
    for (i=0; i<CANTJUG;i++)
    {
        inicializo(jugadores,i);
    }

    system("cls");
    printf("MENU\n");
    printf("====\n");
    printf("1-Listado de jugadores\n");
    printf("2-Listado de todas las partidas\n");
    printf("3-Listado de partidas por jugador\n");
    printf("4-Listado de partidas por fecha\n");
    printf("5-Fin del Programa\n");
    printf("\n\n");
    char p;
    printf (">>Presiona cualquier tecla y enter para volver al menu ");
    scanf (" %c",&p);

    int op;
    op = ingopcion();

    int j;
    j=0;

    while (op!=5)
    {
        switch (op)
        {
            case 1:
                    for (i=0; i<j; i++)
                    {puts(jugadores[CANTJUG].cedula.numero[i]);
                    puts(jugadores[CANTJUG].nombre.palabra[i]);
                    puts(jugadores[CANTJUG].apellido.palabra[i]);
                    puts(jugadores[CANTJUG].alias.palabra[i]);}
                    break;
            case 2:
                    /*listado_partidas;*/
                    break;
            case 3:
                    /*listado_partidas_xjugador;*/
                    break;
            case 4:
                    /*listado_partidas_xfecha;*/
                    break;
            case 5: fin_juego();
                    break;
        }

    }
}

Cuando yo quería mostrar un jugador por busqueda para modificarlo o lo que fuese, tenia funciones así:

void muestroCedula(jugador jugadores[], int pos)
{
    int i;
    printf("\nCedula: ");
    for (i=0;i<jugadores[pos].cedula.largodigito;i++)
    {
        printf("%c",jugadores[pos].cedula.numero[i]);
    }
}


por ejemplo.

Entonces no se como hacer para mostrar todos los jugadores en una lista :|

crack81

lo de "CANTJUG" es la cantidad de jugadores
que puede ser 2,3,8 etc.

Te animo a publicar tu codigo para ver a myor profundidad tus posibles errores,
ya que puedo modificar tu programa pero no sea lo que buscas
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

ivancea96

Tendrás que usar un for para iterar por cada elemento del arreglo jugadores. Puedes poner desde i=0, hasta i<CANTJUG. En cualquier caso, ese i<j sobra. j es 0. i nunca va a ser <j.

dragonlady

#5
Pero si lo pongo así no entiendo porque no me quiere aceptar el %s

printf("\nListado jugadores.\n");
for(i=1;i<CANTJUG;i++){
{printf("\nCedula: %s\n", jugadores[i].cedula);}
for(i=1;i<CANTJUG;i++)
{printf("Nombre %s\n", jugadores[i].nombre);}
for(i=1;i<CANTJUG;i++)
{printf("Apellido %s\n", jugadores[i].apellido);}
for(i=1;i<CANTJUG;i++)
{printf("Alias %s\n", jugadores[i].alias);}

crack81

#6
Estuve revisando tu codigo antes de que lo quitaras, creo que estas escribiendo codigo de mas, tienes que hacer las cosas un poco mas genericas y asi poder reutilizar tu codigo.

mira por ejemplo tenias muchos struct donde la info de adentro era del mismo tipo y yo digo porque no haces algo como esto:

typedef struct{
 char palabra_[20];
 int largoPalabra;
}nombre,apellido,ci,alias;


asi te evitas estar creando 3 o 4


en la funcion Elegir_Bosque puedes hacer esto:
void Elegir_Bosque(void)
{
 // system("cls");
  int elige_bosque;
  printf("     >        Ingresa una opcion:        <\n\n");
  printf("     >        1- Bosque de 6 x 6         <\n");
  printf("     >        2- Bosque de 8 x 8         <\n");
  printf("     >        3- Bosque de 10 x 10       <\n");
  printf("     >        4- Bosque de 14 x 14       <\n");
  printf("     >        5- Bosque de 18 x 18       <\n");
  scanf(" %d", &elige_bosque);

  //system("cls");

  switch(elige_bosque)
  {
  case 1: tam_bosque = 6;break;
  case 2: tam_bosque = 8;break;
  case 3: tam_bosque = 10;break;
  case 4: tam_bosque = 14;break;
  case 5: tam_bosque = 18;break;
  default:tam_bosque = 6;break;
  }

  Iniciar_Bosque();
  Bucle_Juego();

}


y hay una donde si estaba en extremo larga que era la de Iniciar_Bosque
podias haber hecho algo como esto

void Iniciar_Bosque()
{
srand (time(NULL));
int Xnum=0;
int i, j;

//aqui nos creamos un arreglo dinamico que dependiendo la opcion
//del usuario puede ser de 6,8,10,14
//este tambien se llama arreglo bidimensional o puntero doble
char **bosque=(char**)malloc(tam_bosque*sizeof(*char));//esto creas las filas
for(i=0;i<tam_bosque;i++)//recorremos todas las filas
  bosque[i]=(char*)malloc(tam_bosque*sizeof(char));//esto crea las columnas


for(i = 0; i < tam_bosque;i++)
 for(j = 0; j < tam_bosque;j++)
bosque[i][j] = ' ';

bosque[0][0] = '1';
bosque[tam_bosque-1][tam_bosque-1] = '2';


while(Xnum < tam_bosque/2 ){
i = (rand() % tam_bosque);
j = (rand() % tam_bosque);

if(bosque[i][j] == ' ')
{
bosque[i][j] = 'X';
        Xnum++;
}
         
}
}


Si C/C++ es el padre de los lenguajes entonces ASM es dios.

dragonlady

Hola! Gracias por la ayuda. Este año empecé programación y hay cosas que me las tienen limitadas. Yo ya había abierto un tema aquí cuando estaba haciendo la primer parte de los bosques y eso, y había aplicado la idea de arreglos dinámicos, pero el problema es que el profesor no nos permite algunas cosas, entre ellas me rezongó por eso y me hizo hacer los 5 tableros.
Tendré en cuenta lo de las estructuras, eso sí (que también me las enseñaron a hacer separadas así y, aunque me complican mucho y no se mucho el tema, por eso estoy en el lío en el que estoy jaja)

Tengo una parte si no te molesta ayudarme, que me está complicado mucho la vida porque no puedo probar otras partes a causa de eso.

Tengo una función para ingresar a los jugadores:

void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
{
    char confirma;
    int nroJug;
    system("cls");
    printf("\nINGRESO DATOS DE JUGADORES");
    printf("\n==========================\n");
    nroJug = ingNroJugador();
    if (jugadores[nroJug-1].nombre.largopalabra==0)
    {
        jugadores[nroJug-1].nombre = ingresoNombre();
        jugadores[nroJug-1].cedula = ingresoCedula();
        jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
        jugadores[nroJug-1].alias = ingresoAlias();
        getchar();
        printf("Confirma Ingreso S/N");
        scanf(" %c",&confirma);
        if (confirma=='N' || confirma == 'n')
        {
            inicializo(jugadores,nroJug-1);
        }
    }
    else
    {
        getchar();
        printf("\nJugador YA existe");
        printf("\nPresione cualquier tecla para continuar");
        getchar();
    }

}


que lo que debería hacer cuando termino de ingresar un jugador, es volver al menú. Por algun motivo no puedo, siempre cuando termino de ingresar un jugador, me pide que ingrese otro. Alguna idea?

crack81

Pues como jode tu profesor, yo entiendo que algunos problemas necesiten ser desarrollados de una forma para que se entienda algun tema en especifico, pero si tu profesor ya ve que dominas el tema de arreglos estaticos porque limitarte a ellos.

Los arreglos estaticos cualquieras los entiende mientras que arreglo dinamico es un poco mas dificil principalmente por el tema de liberar la memoria.

Respecto a tu tema te aconsejo volvera a publicar tu codigo aunque este largo para ver exactamente donde tocar el codigo.
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

dragonlady

#9
Si es complicado de entender algunas cosas, como las cadenas nos hace ingresarlas de una manera muy larga y no nos enseñó %s, yo digo que eso tendrá el objetivo de no llenarnos más de información, pero la verdad no se. Porque me parece que todo lo que aprendí, lo aprendí a medias, aunque eso también debe ser porque yo soy media mala jajajaj

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define LARGON 15
#define LARGOA 15
#define LARGOC 7
#define LARGOALI 10
#define CANTJUG 100

typedef struct {
   char palabra[LARGON];
   int largopalabra;
}cadena; //estructura tipo cadena para nombre jugador

typedef struct {
   char palabra[LARGOA];
   int largopalabra;
}cadena2; //otra estructura tipo cadena(2) para apellido jugador

typedef struct {
   char numero[LARGOC];
   int largodigito;
}digito; //tipo digito para CI jugador

typedef struct {
   int dia;
   int mes;
   int año;
}fecha; //defino estructura fecha para ser utilizada en la fecha de nacimiento

typedef struct {
   char palabra[LARGOALI];
   int largopalabra;
}cadena3; //definoi estructura tipo cadena(3) para alias jugador


typedef struct {
   cadena nombre;
   cadena2 apellido;
   cadena3 alias;
   digito cedula;
   int edad;
   fecha fechanacimiento;
} jugador; // defino estructura jugador para ser utilizada en el arreglo que guarda los jugadores.

/*typedef struct{
   fecha fecha_partida;
   char alias1[10];
   char alias2[10];
   int round_jug1;
   int round_jug2;
}info_partida;*/

//Prototipos
void menu();
void reglas();
void fin_juego();
void Elegir_Bosque();
void Iniciar_Bosque();
void Actualizar_Juego();
void Bucle_Juego();
void mover_tirarflecha(int);
void inicializo(jugador jugadores[], int pos);//inicializo jugadores
void menu();//armo el menu
int ingopcion();//ingreso la ocpion del menu
int ingNroJugador();//ingreso nro del jugador
void alta(jugador jugadores[]);//procedimiento de alta
cadena ingresoNombre();// ingreso nombre del jugador
cadena2 ingresoApellido();//ingreso apellido del jugador
cadena3 ingresoAlias();//ingreso alias del jugador
digito ingresoCedula();//ingreso cedula del jugador
int calcularEdad();//calculo la Edad del jugador con la fecha de nacimiento
fecha ingresoFechanacimiento();//ingreso fecha de nacimiento
void baja(jugador jugadores[]);//procedimiento para dar de baja al jugador
void modificacion(jugador jugadores[]);//procedimiento para consultar el jugador
void muestroNombre(jugador jugadores[],int pos);//muestro el nombre del jugador
void muestroApellido(jugador jugadores[],int pos);//muestro el apellido del jugador
void muestroCedula(jugador jugadores[],int pos);//muestro la cedula del jugador
void muestroEdad(jugador jugadores[],int pos);//muestro la edad del jugador
void muestroFechanacimiento(jugador jugadores[],int pos);//muestro la fecha de nacimiento
void muestroAlias(jugador jugadores[], int pos);//muestro el alias
void Gestionar_jugadores();
void Consultas();
fecha fecha_del_dia();

//Variables globales
char bosque6x6[6][6];
char bosque8x8[8][8];
char bosque10x10[10][10];
char bosque14x14[14][14];
char bosque18x18[18][18];

int opcion=0;
int tam_bosque=0;

int main()
{
   while(opcion!=5)
   {
       fecha_del_dia();
       system("cls");
       menu();
       scanf("%d",&opcion);
       switch(opcion)
       {
           case 1: Elegir_Bosque();
                   break;
           case 2: reglas();
                   break;
           case 3: Gestionar_jugadores();
                   break;
           case 4: Consultas();
                   break;
           case 5: fin_juego();
                   break;

       }
    }
  return 0;
}

void menu()
{
  printf("     ______ARQUEROS EN EL BOSQUE_______\n");
  printf("     ____________OOOOOO________________\n");
  printf("     _________OOOOOOOOOOOOO____________\n");
  printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  printf("     ______OOOOOOOOOOOOOOOOOO__________\n");
  printf("     _________OOOOOOOOOOOO_____________\n");
  printf("     __<----____OOOOOOOO_______________\n");
  printf("     _____________OOOO_________________\n");
  printf("     _____________OOOO_______---->_____\n");
  printf("     _____________OOOO_________________\n");
  printf("     _____________OOOO_________________\n");
  printf("\n");
  printf("     MENU PRINCIPAL\n");
  printf("     ><><><><><><><\n");
  printf("     Ingrese una de las opciones: \n");
  printf("     1. Jugar\n");
  printf("     2.Ver reglas\n");
  printf("     3.Gestionar jugadores\n");
  printf("     4.Consultas\n");
  printf("     5.Salir del juego\n");
  printf("\n");
}

fecha fecha_del_dia()
{
   fecha fechadia;
   printf("\n              Ingrese Fecha del dia dd/mm/aaaa: ");
   scanf("%d/%d/%d",&fechadia.dia,&fechadia.mes, &fechadia.año);
   return fechadia;
}

void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
{
  system("cls");
  printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  printf("Cada turno puede elegir moverse una casilla o lanzar un flechazo. \n");
  printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  printf("\n\n");
  char p;
  printf (">>Presiona cualquier tecla y enter para volver al menu ");
  scanf (" %c",&p);
}

void fin_juego()
{
   system("cls");
   printf("\n\n\n\t\t\t* GRACIAS POR JUGAR! *\n\n\n");
   printf("\t\t\t  Sabrina Cabrera.\n \t\t\t  Programacion.\n \t\t\t  Tecnologo 2015\n\n");
}

void Elegir_Bosque()
{
  system("cls");
  int elige_bosque;
  printf("     >        Ingresa una opcion:        <\n\n");
  printf("     >        1- Bosque de 6 x 6         <\n");
  printf("     >        2- Bosque de 8 x 8         <\n");
  printf("     >        3- Bosque de 10 x 10       <\n");
  printf("     >        4- Bosque de 14 x 14       <\n");
  printf("     >        5- Bosque de 18 x 18       <\n");
  scanf(" %d", &elige_bosque);

  system("cls");

  switch(elige_bosque)
  {
      case 1: tam_bosque = 6;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 2: tam_bosque = 8;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 3: tam_bosque = 10;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 4: tam_bosque = 14;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
      case 5: tam_bosque = 18;
              Iniciar_Bosque();
              Bucle_Juego();
              break;
  }

}
//valores iniciales para el bosque
void Iniciar_Bosque()
{
   srand (time(NULL));

   int Xnum=0;
   int i, j;

   if(tam_bosque == 6)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque6x6[i][j] = ' ';

       bosque6x6[0][0] = '1';
       bosque6x6[5][5] = '2';


       while(Xnum < tam_bosque/2 )

       {
           i = (rand() % tam_bosque);
           j = (rand() % tam_bosque);

           if(bosque6x6[i][j] == ' ')
           {
               bosque6x6[i][j] = 'X';
               Xnum++;
           }

       }
   }

   else if(tam_bosque == 8)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque8x8[i][j] = ' ';

       bosque8x8[0][0] = '1';
       bosque8x8[7][7] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque8x8[i][j] == ' ')
           {
               bosque8x8[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 10)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque10x10[i][j] = ' ';

       bosque10x10[0][0] = '1';
       bosque10x10[9][9] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque10x10[i][j] == ' ')
           {
               bosque10x10[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 14)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque14x14[i][j] = ' ';

       bosque14x14[0][0] = '1';
       bosque14x14[13][13] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque14x14[i][j] == ' ')
           {
               bosque14x14[i][j] = 'X';
               Xnum++;
           }

       }
   }
   else if(tam_bosque == 18)
   {
       for(i = 0; i < tam_bosque;i++)
           for(j = 0; j < tam_bosque;j++)
               bosque18x18[i][j] = ' ';

       bosque18x18[0][0] = '1';
       bosque18x18[17][17] = '2';

       while(Xnum < tam_bosque/2 )
       {
           i = rand() % tam_bosque;
           j = rand() % tam_bosque;

           if(bosque18x18[i][j] == ' ')
           {
               bosque18x18[i][j] = 'X';
               Xnum++;
           }

       }
   }

}

//dibuja cuando sea necesario
void Actualizar_Juego()
{
   system("cls");

   if(tam_bosque == 6)
   {
       int i,j;
       printf("\n  ");

       for (j = 0; j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque6x6[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 8)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque8x8[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 10)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque10x10[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 14)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque14x14[i][j]);
           }
           printf("| \n");
       }
   }
   else if( tam_bosque == 18)
   {
       int i,j;
       printf("\n  ");

       for (j = 0;j < tam_bosque;j++) //filas alfabeticas
           printf("  %c", 'a'+j);
       printf("\n");

       for (i = 0;i < tam_bosque;i++) //columnas numeradas
       {
           printf(" %2d", i);

           for (j = 0;j < tam_bosque;j++)
           {
               printf("| %c", bosque18x18[i][j]);
           }
           printf("| \n");
       }
   }

}

//jugadas
void Bucle_Juego()
{
   int ganador=0;
   int turno=0;

   printf("Que jugador empieza?: ");
   scanf(" %d", &turno);

   do
   {
       while(ganador == 0)//que se repita mientras no haya ningun ganador
       {
           Actualizar_Juego(); //Actualiza el juego
           mover_tirarflecha(turno); //mueve o ataca

           //Falta comprobar si alguno ya ganó

           //Cambiando los turnos
           if(turno == 1)
           {
               turno = 2;
           }
               else
                   turno = 1;
       }

       //cuando se termine el bucle comprueba quien ha ganado
       if(ganador == 1)
           {
               printf("Ha Ganado el jugador 1");
           }
               else if(ganador == 2)
                   printf("Ha Ganado el jugador 2");

       ganador++;
   }
    while (ganador < 3);

    //para que pregunte si quiere salir o seguir jugando
    /*char respuesta;
    int s=0,n=1;
    printf("Quiere jugar de nuevo? (s/n): ");
    scanf(" %c", &respuesta);

   if (respuesta==s)
   {

   }
       else if (respuesta==n)
           fin_juego();*/

}



void mover_tirarflecha(int turno)
{
   char imagen_jugador; //dibuja 1' o '2' dependiendo del turno

   if(turno == 1)
   {
       imagen_jugador = '1';
       printf("Es el turno del jugador 1\n");
   }
   else
   {
       imagen_jugador = '2';
       printf("Es el turno del jugador 2\n");
   }

  char accion;

   //moverse
  int o_i,d_i; //coordenadas origen
  char o_j,d_j;  //coordenadas destino

  printf("Moverte, tirar flecha o rendirse? (m, t, r)");
  scanf(" %c", &accion);

  //para saber lo que ha ingresado
  if(accion == 'm')
  {
      printf("\nIngrese Coordenadas origen (ej. 0-a) "); //origen
      scanf("%d-%c", &o_i,&o_j);

      printf("\nIngrese Coordenadas destino (1 lugar) "); //destino
      scanf("%d-%c", &d_i,&d_j);


      //Dependiendo del tamaño del bosque
      if( tam_bosque == 6)
      {
          //para que se mueva 1 solo lugar
          /*if ((bosque6x6[d_i+1][d_j])&&(bosque6x6[d_i][d_j+1])&&(bosque6x6[d_i-1][d_j])&&(bosque6x6[d_i][d_j-1]))*/
          {
               bosque6x6[o_i][o_j - 97]= ' '; //queda vacio donde estaba
               bosque6x6[d_i][d_j - 97]= imagen_jugador; //a donde lo mueve mientras esté el espacio vacio
          }
      }
      else if( tam_bosque == 8)
      {
          bosque8x8[o_i][o_j - 97]= ' ';
          bosque8x8[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 10)
      {
          bosque10x10[o_i][o_j - 97]= ' ';
          bosque10x10[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 14)
      {
          bosque14x14[o_i][o_j - 97]= ' ';
          bosque14x14[d_i][d_j - 97]= imagen_jugador;
      }
      else if( tam_bosque == 18)
      {
          bosque18x18[o_i][o_j - 97]= ' ';
          bosque18x18[d_i][d_j - 97]= imagen_jugador;
      }

  }
 else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
  {
      //para el bosque x6
      if (tam_bosque==6)
      {
          int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
          int i=d_i;
          int j=d_j;

          while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
          {
              if (bosque6x6[i][j]!='2')
                 {
                       arriba++;
                       j++;
                       printf("Fallaste!\n");
                 }
                 else printf("GAME OVER: Jugador 2");
          }


          while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo

          {
              if (bosque6x6[i][j]!='2')
                 {
                       abajo++;
                       j--;
                       printf("Fallaste!\n");
                 }

                 else printf("GAME OVER: Jugador 2");

          }

          while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
          {
              if (bosque6x6[i][j]!='2')
                   {
                       izq++;
                       i--;
                       printf("Fallaste!\n");
                 }
                 else printf("GAME OVER: Jugador 2");
   printf ("\t>>Presiona cualquier tecla y enter para volver al menu principal");
   getchar();

          }

          while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
          {
              if (bosque6x6[i][j]!='2')
                 {
                       derecha++;
                       i++;
                       printf("Fallaste!\n");
                 }

                 else printf("GAME OVER: Jugador 2");

          }


      }
  }
   else if (accion = 'r')
   {
       printf("Te has rendido: Perdiste!");
       system("cls");
       printf("GAME OVER");
       menu();
   }

}

void Gestionar_jugadores()
{
   system("cls");
   jugador jugadores[CANTJUG];
                   //inicializo todo el arreglo
   int i;
   for (i=0; i<CANTJUG;i++)
   {
       inicializo(jugadores,i);
   }

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Alta de jugador\n");
   printf("2-Baja de jugador\n");
   printf("3-Modificacion jugador\n");
   printf("4-Volver al menu anterior\n");
   printf("\n\n");

   int op;
   op = ingopcion();

   while (op!=4)
   {
       switch (op)
       {
           case 1:
                   alta(jugadores);
                   break;
           case 2:
                   baja(jugadores);
                   break;
           case 3:
                   modificacion(jugadores);
                   break;
           case 4: menu();
                   break;
       }

   }


}


int ingopcion()
{
   int opcion;
   do
   {
       printf("\nIngrese opcion (1-4)");
       scanf("%d",&opcion);
   }
   while ((opcion < 1) || (opcion > 4));
   return (opcion);
}


void inicializo(jugador jugadores[], int pos)
{
   //inicializo el nombre del jugador
   int x;
   for (x=0;x<LARGON;x++)
   {
       jugadores[pos].nombre.palabra[x] = ' ';
   }
   jugadores[pos].nombre.largopalabra = 0;
   //inicializo la cedula
   for (x=0;x<LARGOC;x++)
   {
       jugadores[pos].cedula.numero[x] = ' ';
   }

   jugadores[pos].edad = 0;
   jugadores[pos].fechanacimiento.dia = 0;
   jugadores[pos].fechanacimiento.mes = 0;
   jugadores[pos].fechanacimiento.año = 0;

   for(x=0;x<LARGOA;x++)
   {
       jugadores[pos].apellido.palabra[x] = ' ';
   }
   jugadores[pos].apellido.largopalabra = 0;

   for(x=0;x<LARGOALI;x++)
   {
       jugadores[pos].alias.palabra[x] = ' ';
   }
   jugadores[pos].alias.largopalabra = 0;
}

int ingNroJugador()
{
   int nrojug;
   do
   {
       printf("Ingrese Nro. de Jugador (1..%d)",CANTJUG);
       scanf("%d",&nrojug);
   }
   while ((nrojug < 1) || (nrojug > CANTJUG));
   return (nrojug);
}

void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
{
   char confirma;
   int nroJug;
   system("cls");
   printf("\nINGRESO DATOS DE JUGADORES");
   printf("\n==========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.largopalabra==0)
   {
       jugadores[nroJug-1].nombre = ingresoNombre();
       jugadores[nroJug-1].apellido = ingresoApellido();
       jugadores[nroJug-1].cedula = ingresoCedula();
       jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
       jugadores[nroJug-1].alias = ingresoAlias();
       getchar();
       printf("Confirma Ingreso S/N");
       scanf(" %c",&confirma);
       if (confirma=='N' || confirma == 'n')
       {
           inicializo(jugadores,nroJug-1);
           menu();
       }
   }
   else
   {
       getchar();
       printf("\nJugador YA existe");
       printf("\nPresione cualquier tecla para continuar");
       getchar();
   }

}

cadena ingresoNombre()
{
   getchar();
   cadena nom;
   int i;
   i = 0;
   printf("\nIngrese nombre del jugador: ");
   while (((nom.palabra[i]=getchar()) != 10) && i <= LARGON)
   {
           i++;
   }
   nom.largopalabra = i;
   return nom;
}

cadena2 ingresoApellido()
{
   getchar();
   cadena2 ape;
   int i;
   i = 0;
   printf("\nIngrese apellido del jugador: ");
   while (((ape.palabra[i]=getchar()) != 10) && i <= LARGOA)
   {
           i++;
   }
   ape.largopalabra = i;
   return ape;
}

digito ingresoCedula()
{
   int i=0;
   digito ced;
   printf("\nIngrese Cedula del jugador: ");
   while (((ced.numero[i]=getchar())!= 10) && i<LARGOC)
   {
       i++;
   }
   ced.largodigito = i;

return ced;

}

fecha ingresoFechanacimiento()
{
   fecha fechanac;
   printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
   scanf("%d/%d/%d",&fechanac.dia,&fechanac.mes, &fechanac.año);
   return fechanac;
}

int calcularEdad()
{
   fecha f = ingresoFechanacimiento();
   int edad = 2015 - f.año;
   return edad;
}

cadena3 ingresoAlias()
{
   getchar();
   cadena3 ali;
   int i;
   i = 0;
   printf("\nIngrese Alias del jugador: ");
   while (((ali.palabra[i]=getchar()) != 10) && i <= LARGOALI)
   {
           i++;
   }
   ali.largopalabra = i;
   return ali;
}


void baja(jugador jugadores[])
{
   char confirma;
   int nroJug;
   system("cls");
   printf("\nELIMINAR DATOS DE JUGADORES");
   printf("\n===========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.largopalabra!=0)
   {
       getchar();
       printf("\nDatos del jugador nro. %d ",nroJug);
       muestroNombre(jugadores, nroJug-1);
       muestroApellido(jugadores, nroJug-1);
       muestroCedula(jugadores, nroJug|-1);
       muestroEdad(jugadores, nroJug-1);
       muestroFechanacimiento(jugadores,nroJug-1);
       muestroAlias(jugadores,nroJug-1);
       printf("\nDesea eliminar dichos datos (S/N) ");
       scanf("%c",&confirma);
       if ((confirma == 'S') || (confirma == 's'))
       {
           inicializo(jugadores,nroJug-1);
       }
       printf("\nDatos Eliminados");
   }
   else
   {
       printf("\njugador NO existe");

   }
   getchar();
   printf("\nPresione cualquier tecla para continuar");
   getchar();

}

void modificacion(jugador jugadores[])
{
   int nroJug;
   system("cls");
   printf("\nMODIFICAR DATOS DE JUGADORES");
   printf("\n==========================\n");
   nroJug = ingNroJugador();
   if (jugadores[nroJug-1].nombre.palabra[1]!=' ')
   {
       getchar();
       printf("\nDatos del jugador nro. %d ",nroJug);
       muestroNombre(jugadores, nroJug-1);
       muestroApellido(jugadores, nroJug-1);
       muestroCedula(jugadores, nroJug-1);
       muestroFechanacimiento(jugadores,nroJug-1);
       muestroEdad(jugadores, nroJug-1);
   }
   else
   {
       getchar();
       printf("\njugador NO existe");

   }
   printf("\nPresione cualquier tecla para continuar");
   getchar();


}

void muestroNombre(jugador jugadores[],int pos)
{
   int i;
   printf("\nNombre: ");
   for (i=0;i<jugadores[pos].nombre.largopalabra;i++)
   {
       printf("%c",jugadores[pos].nombre.palabra[i]);
   }
}

void muestroApellido(jugador jugadores[],int pos)
{
   int i;
   printf("\nApellido: ");
   for (i=0;i<jugadores[pos].apellido.largopalabra;i++)
   {
       printf("%c",jugadores[pos].apellido.palabra[i]);
   }
}

void muestroCedula(jugador jugadores[], int pos)
{
   int i;
   printf("\nCedula: ");
   for (i=0;i<jugadores[pos].cedula.largodigito;i++)
   {
       printf("%c",jugadores[pos].cedula.numero[i]);
   }
}


void muestroFechanacimiento(jugador jugadores[],int pos)
{
   printf ("\nFecha de Nacimiento: %d/%d/%d",jugadores[pos].fechanacimiento.dia,jugadores[pos].fechanacimiento.mes,jugadores[pos].fechanacimiento.año);

}

void muestroEdad(jugador jugadores[], int pos)
{
   printf("%d",jugadores[pos].edad);
}

void muestroAlias(jugador jugadores[], int pos)
{
   int i;
   printf("\nAlias: ");
   for (i=0;i<jugadores[pos].alias.largopalabra;i++)
   {
       printf("%c",jugadores[pos].alias.palabra[i]);
   }
}

void Consultas(jugador jugadores[], int pos)
{
   int i;

   system("cls");
   printf("MENU\n");
   printf("====\n");
   printf("1-Listado de jugadores\n");
   printf("2-Listado de todas las partidas\n");
   printf("3-Listado de partidas por jugador\n");
   printf("4-Listado de partidas por fecha\n");
   printf("5-Vuelve al menu anterior\n");
   printf("\n\n");
   char p;
   printf (">>Presiona cualquier tecla y enter para volver al menu ");
   scanf (" %c",&p);

   int op;
   op = ingopcion();

   while (op!=5)
   {for(i=1;i<CANTJUG;i++){
                   {printf("\nCedula: %s\n", jugadores[i].cedula);}
       switch (op)
       {
           case 1://Listado de jugadores
                   printf("\nListado jugadores.\n");
                   for(i=0;i<CANTJUG;i++){
                   printf("\nCedula: %s\n", jugadores[i].cedula);
                   printf("Nombre %s\n", jugadores[i].nombre);
                   printf("Apellido %s\n", jugadores[i].apellido);
                   printf("Alias %s\n", jugadores[i].alias);}
               break;
           case 2:
                   /*listado_partidas;*/
                   break;
           case 3:
                   /*listado_partidas_xjugador;*/
                   break;
           case 4:
                   /*listado_partidas_xfecha;*/
                   break;
           case 5: menu();
                   break;
       }

   }
}

}