Proyecto Ahorcado

Mensaje
Autor
IamNot
Mensajes: 222
Registrado: 06/08/2007 8:01 am

#16 Mensaje por IamNot » 25/08/2008 3:21 pm

a la mercuri, me agarraron mal estacionado, yo revisando el post anterior y habian abierto uno nuevo jeje. buej, supongo que empezare de una vez para no quedarme atras.

WaRc3L
Mensajes: 199
Registrado: 12/06/2008 12:27 pm
Ubicación: en el registro de la CPU

#17 Mensaje por WaRc3L » 26/08/2008 6:05 am

xD, ya tienes tiempo de acabarlo IamNot, yo lo acabe en un dia...

Por cierto!, el problema de v4r3t, me suena familiar quando usas un solo char... Yo he echo una matriz, para que asi guarde caracter a caracter cada posicion..

Bueno!, esta es mi manera, no se como lo has planteado tu.

Saludos!, y de momento han dado 4 personas señales de vida, clavo aun no lo he visto por aqui...
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#18 Mensaje por polly » 26/08/2008 6:09 am

a la mercuri, me agarraron mal estacionado, yo revisando el post anterior y habian abierto uno nuevo jeje. buej, supongo que empezare de una vez para no quedarme atras.
Tienes tiempo hasta el jueves (todo el dia), el viernes se revisaran todos los programas (ya veremos como)
Recuerda que debes usar C o C++ ESTANDAR

S2
enrmarc

WaRc3L
Mensajes: 199
Registrado: 12/06/2008 12:27 pm
Ubicación: en el registro de la CPU

#19 Mensaje por WaRc3L » 26/08/2008 6:50 am

He dejado un link y una breve explicacion en el otro foro sobre los mini-proyectos, para que la gente no se vuelve a confundirse

Saludos!
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!

Avatar de Usuario
v4r3t
Mensajes: 103
Registrado: 06/03/2007 12:00 am

#20 Mensaje por v4r3t » 26/08/2008 2:14 pm

Ya lo tengo hecho, pero ocupa 256 líneas (aunque le he añadido unos cuantos comentarios), mañana pegamos el código directamente o...¿qué otra cosa se podría hacer?
-=v4r3t=-

WaRc3L
Mensajes: 199
Registrado: 12/06/2008 12:27 pm
Ubicación: en el registro de la CPU

#21 Mensaje por WaRc3L » 26/08/2008 2:32 pm

Viernes ( dia 29 ) lo entregas, y trankilo, yo creo que tengo mas que 200 lineas... eso no es problema.
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#22 Mensaje por polly » 26/08/2008 3:12 pm

El plazo es hasta el jueves (todo el dia incluido).

Lo puedes postear directamente aqui en el foro de la manera habitual.
enrmarc

clavo
Mensajes: 30
Registrado: 13/08/2008 11:38 pm

#23 Mensaje por clavo » 27/08/2008 1:08 pm

ola
yo asta dentro de dos semanas no voy a poder pasarme por aki.
no conteis conmigo durante ese tiempo.

un saludo

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#24 Mensaje por polly » 27/08/2008 1:30 pm

Ok clavo
enrmarc

Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

#25 Mensaje por eagleoneraptor » 27/08/2008 2:55 pm

Hola gente, si no entendi mal, polly me admitio para esta pequeña competencia, y tuve una corazonada y ya lo termine a mi ahorcado, ¿lo puedo postear ahora asi no me olvido o debo esperar hasta mañana?

Un saludo!
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#26 Mensaje por polly » 27/08/2008 3:02 pm

puedes colgarlo ahora, tampoco hay tantas restricciones

creo que yo tambien lo colgare

S2
enrmarc

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#27 Mensaje por polly » 27/08/2008 3:04 pm

Bueno, tecnicamente para mi ya es jueves, ahi va mi codigo:

Código: Seleccionar todo


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define FALLOS_MAXIMO	6
#define ENTRADA_LONG  16

enum boolean {FALSE, TRUE};

/* Conjunto de palabras */
char *palabras[] = {"baloncesto", "tenis de mesa", "programador"};

/* Dibujo del ahorcado */
char dibujo [9][9];

void inicializar_dibujo		(void);
void seleccionar_palabra	(char **oculta, char **verdadera);
int  validar_entrada 			(char entrada[]);
void interfaz 						(char **oculta, char **verdadera, char caracter, char buffer[][1]);
void inicializar_buffer 	(char buffer[][1]);
void mostrar_info					(char *oculta, int intentos, char buffer[][1]);
int esta 									(char caracter, char *original);
int acabado								(char *oculta, char *original);
void mostrar_dibujo				(void);
void actualizar_dibujo 		(int intentos);

int main()
{
		char *oculta;
		char *original;
		int valido;
		char buffer[26][1];
		int intentos = 0;
		char entrada[ENTRADA_LONG];

		/* Inicializar dibujo */
		inicializar_dibujo ();

		/* Buffer de caracteres ingresados */
		inicializar_buffer (buffer);

		seleccionar_palabra (&oculta, &original);

		while (intentos < FALLOS_MAXIMO)
		{
				valido = FALSE;
				interfaz (&oculta, &original, entrada[0], buffer);
				
				while (!valido) 
				{
						system ("clear");
						mostrar_dibujo();

						mostrar_info (oculta, intentos, buffer);
				
						if (acabado (oculta, original))
						{
							puts ("\nHa ganado!!");
							return 0;
						}

						/* Pedimos entrada */
						fgets (entrada, ENTRADA_LONG, stdin);
						valido = validar_entrada (entrada) ;

						if (!valido)
						{	
							puts ("Caracter no permitido, pulsa <INTRO> para continuar");
							getchar();
						}
						else
						{
							/* Si fallamos se incrementa en contador de fallos y 
							 * se actualiza el dibujo */
							if (!esta (entrada[0], original))
							{
									intentos++;
									actualizar_dibujo (intentos);
							}
						}
				}
		}
		/* Imprimimos solucion */
		printf ("\nFallaste, la palabra era \"%s\"\n", original);
		
		return 0;
}

void actualizar_dibujo (int intentos)
{
		switch (intentos)
		{
				case 1 :	dibujo[2][7] = 'O';
									break;
				case 2 :	dibujo[3][7] = '|';
									dibujo[4][7] = '|';
									break;
				case 3:		dibujo[3][6] = '/';
									break;
				case 4:		dibujo[3][8] = '\\';
									break;
				case 5:		dibujo[5][6] = '/';
									break;
				case 6:		dibujo[5][8] = '\\';
									break;
		}
}

/* Mostramos al monigote */
void mostrar_dibujo (void)
{
		int i,j;

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

/* Iniciar monigote */
void inicializar_dibujo (void)
{
		int i,j;

		for (i = 0; i < 9; i++)
				for (j = 0; j < 9; j++)
						dibujo[i][j] = ' ';

		for (i = 1; i < 8; i++)
				dibujo[i][1] = '|';

		for (j = 1; j < 8; j++)
				dibujo[1][j] = '_';

		dibujo[7][2] = '_';
		dibujo[7][3] = '_';

}

/* Verifica si el juego ha terminado */
int acabado (char *oculta, char *original)
{
		int fin = FALSE;

		if (strcmp(oculta, original) == 0)
				fin = TRUE;	
		return fin;
}

/* Verifica si un caracter esta en la palabra */
int esta (char caracter, char *original)
{
		int i;
		int localizado = FALSE;

		for (i = 0; (i < strlen(original)) && !localizado; i++)
				if (caracter == original[i])
						localizado = TRUE;
		return localizado;
}


/* Mostramos la palabra oculta, los intentos, los caracteres ingresados ..*/
void mostrar_info (char *oculta, int intentos, char buffer[][1])
{
		char i;
	
		/* Mostramos palabra oculta */
		printf ("\n\t");
		puts (oculta);
	
		/* Mostramos caracteres ingresados */
		printf ("\n\nCaracteres ingresados: ");
		for (i = 'a'; i <= 'z'; i++)
		{
				if (buffer[i][0] == TRUE)
						printf ("%-2c", i);
		}
		
		/* Mostramos los intentos fallidos */
		printf ("\nIntentos: %d\n", intentos);
		printf ("Ingresa caracter: ");
}

/* Buffer de caracteres ingresados */
void inicializar_buffer (char buffer[][1])
{
		char i;
		for (i = 'a'; i <= 'z'; i++)
				buffer[i][0] = FALSE;
}


void seleccionar_palabra (char **oculta, char **verdadera)
{
		int i;
		int opcion;

		/* Palabra al azar */
		srand (time(NULL));
		opcion = rand() % 3;

		/* Ocultamos palabra */
		*oculta = (char*) calloc (strlen(palabras[opcion]) + 1, sizeof(char));
		strcpy (*oculta, palabras[opcion]);
		
		for (i = 0; i < strlen(*oculta); i++)
		{
				if ((palabras[opcion])[i] != ' ')
					(*oculta)[i] = '-';
		}

		/* La palabra original */
		*verdadera = (char*) calloc (strlen(palabras[opcion]) + 1, sizeof(char));
		strcpy (*verdadera, palabras[opcion]);
}
		


int validar_entrada (char entrada[])
{
		if (isalpha(entrada[0]) && (strlen(entrada) == 2))
				return TRUE;
		else
				return FALSE;
}

/* Sustituye el caracter en la palabra */
void interfaz (char **oculta, char **verdadera, char caracter, char buffer[][1])
{
		int i;
		
		if (buffer[caracter][0] == TRUE)
		{
				puts ("Caracter ya ingresado, pulsa <INTRO> para continuar"); 
				getchar();
		}

		/* Sustituimos caracter */
		for (i = 0; i < strlen(*verdadera); i++)
		{
				if (caracter == (*verdadera)[i])
				{
						(*oculta)[i] = caracter;
				}
		}

		/* Marcamos caracter en el buffer de caracteres ingresados */
		buffer[caracter][0] = TRUE;
}
enrmarc

Avatar de Usuario
v4r3t
Mensajes: 103
Registrado: 06/03/2007 12:00 am

#28 Mensaje por v4r3t » 27/08/2008 5:21 pm

Pues ahí va el mío también:

Código: Seleccionar todo

/* 
	Proyecto "Juego del ahorcado".

		+-----
		|/   |
		|   \O/
		|    |
		|   / \
		+-----

    Autor: v4r3t
*/

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

/* Funciones que dependen del SO */
#ifdef WIN32
	#include <windows.h>	
	#define Esperar(x) Sleep(x)
	#define Limpiar_Pantalla system("cls"); 
#endif

#ifdef LINUX
	#include <unistd.h>
	#define Esperar(x) sleep(x)
	#define Limpiar_Pantalla system("clear");
#endif  

/* Macros de longitud */
#define T 30
#define N 5


/* Variables globales */
char frase[T],fallidas[11],frase2[T];
int i,lon,intentos=11;
char frases[N][T] = {"el rincon del C","ahorcado","windows xp","programacion","ordenador"};

/* Declaración de funciones */
void Ahorcado();
void Imprimir_Pantalla();
void Escoger_Frase();
int Ya_Puesta(char);

/* Main */
int main()
{
    Ahorcado();
    return 1;
}

/* Función principal */
void Ahorcado()
{
    char letra,aux[2];
    int completo=0,dentro,pos_f=0;
	
	fallidas[pos_f]='\0';
	Escoger_Frase();
	lon=strlen(frase);

	for (i=0;i<lon;i++) // Escribir los guiones según 
	{                   // las letras de la frase 
		if (frase[i] == ' ')
		{
			frase2[i]=frase[i];
			completo++;
		}
		else
			frase2[i] = '-';
	}

    while(completo<lon) // Mientras que queden letras por poner.
    {
		Imprimir_Pantalla();

		dentro=0;
		fflush(stdin);
		fgets(aux,2,stdin); // Leer la letra.
		letra=aux[0]; // Sólo la primera letra, aunque se escriban más.
		printf(" ");
		letra=tolower(letra);

		if (isalpha(letra)!=0) // Comprobar que sea una letra.
		{
		    if (!Ya_Puesta(letra)) // Si no está puesta la letra.
		    {
				for (i=0;i<lon;i++)
				{
				    if (letra == frase[i] || letra == tolower(frase[i]))
					{    // Buscar las letras coincidentes en la frase y almacenarlas
						frase2[i]=letra; // para luego imprimirlas en pantalla.
				        completo++; // Se incrementa el numero de letras acertadas.  
				        dentro++;          
				        
				    }
				}
				if (dentro == 0) // Si la letra no está en la frase
				{                // se resta un intento.
			
				    intentos--;
				    if (intentos==0) // Si se acaban los intentos se pierde.
				        break;
					fallidas[pos_f]=letra; // Almacenar las letras fallidas. 
					pos_f++;
					fallidas[pos_f]='\0';
				}
			}
			else // Si la letra está puesta.
			{
			     printf("  Esa letra ya esta puesta");
			     Esperar(1000);
			}
		}
	}

	strcpy(frase2,frase);
	Imprimir_Pantalla();

    if (intentos != 0)            
        printf("\n               ACERTASTE\n"); // Si se acierta la frase.    
    else 
        printf("\n               PERDISTE\n"); // Si no se acierta la frase.    
}

/* Función que "refresca" la pantalla */
void Imprimir_Pantalla()
{
	int i;

	Limpiar_Pantalla;
	printf("\n  ");
	for (i=0;i<lon;i++) // Escribir los guiones.
		putchar(frase2[i]);
	printf("              Tienes %d intentos\n\n",intentos);
	printf("                      Fallidas: ");
	for (i=0;fallidas[i] != '\0';i++)
		printf("%c,",fallidas[i]);
	printf("\n\n\n\n");

	switch(intentos) // Se va completando el dibujo según los fallos.
	{
		case 11:
			printf("\n\n\n\n\n\n");
			break;
		case 10:
			printf("\n\n\n\n\n            +-----\n");
			break;
		case 9:
			printf("            +\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            +-----\n");    
			break;
		case 8:
			printf("            +-----\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 7:
			printf("            +-----\n");
			printf("            |/\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 6:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 5:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |    O\n");
			printf("            |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 4:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |    O\n");
			printf("            |    |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 3:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |   \\O\n");
			printf("            |    |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 2:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |   \\O/\n");
			printf("            |    |\n");
			printf("            |\n");
			printf("            +-----\n");   
			break;
		case 1:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |   \\O/\n");
			printf("            |    |\n");
			printf("            |   /\n");
			printf("            +-----\n");   
			break;
		case 0:
			printf("            +-----\n");
			printf("            |/   |\n");
			printf("            |   \\O/\n");
			printf("            |    |\n");
			printf("            |   / \\\n");
			printf("            +-----\n");   
			break;
	}
	printf("\n\nLetra: ");
}

/* Función que escoge una frase aleatoria de la matriz */
void Escoger_Frase()
{
     int aleatorio;
	 srand(time(NULL));
     aleatorio=rand()%N;
     strcpy(frase,frases[aleatorio]);
}

/* Función que comprueba si una letra ya está puesta (para los despistadillos) */
int Ya_Puesta(char letra)
{
    int i;
    for (i=0;fallidas[i]!='\0';i++)
    {
        if (letra == fallidas[i])
           return 1;
    }
	for (i=0;frase2[i]!='\0';i++)
    {
        if (letra == frase2[i])
           return 1;
    }
    return 0;
}
Última edición por v4r3t el 27/08/2008 8:10 pm, editado 2 veces en total.
-=v4r3t=-

Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

#29 Mensaje por eagleoneraptor » 27/08/2008 5:37 pm

Aquí va el mío.

Código: Seleccionar todo

//Proyecto del ahorcado para elrincondelc
//Por EagleOneRaptor

#include <stdio.h> //E/S
#include <strings.h> //Uso de strlen() y strcmp()
#include <ctype.h> //Uso de isalpha()
#include <stdlib.h> // Uso de system()
#include <conio.h> // Uso de getch()
//Función getch(): devuelve un solo caracter capturado desde el teclado sin imprimirlo.

struct Palabra{
    char palabra[81];
    int letras;
    bool *adivinado;
};

//Inicializa la palabra a adivinar segun lo escrito
void InicializarPalabra(Palabra *pal);
//Dibuja el ahorcado segun las fallas actuales
void DibujarAhorcado(int fallas);
//Escribe la palabra a adivinar segun las letras adivinadas
void EscribirPalabra(Palabra *pal);
//Pulsa rango de letras limitado
char PulsarLetra();


void InicializarPalabra(Palabra *pal)
{
    int i;
    bool correcto;
    
    do{
        correcto=true;
        pal->letras=0;
        printf("Introduce la frase a adivinar (80 caracteres maximo):\n");
        gets(pal->palabra);
        for(i=0;i<strlen(pal->palabra)&&correcto;i++){
            if(pal->palabra[i]!=' '){
                if(!isalpha(pal->palabra[i])) correcto=false;
                else{
                    if(isupper(pal->palabra[i]))
                        pal->palabra[i]=tolower(pal->palabra[i]);
                    pal->letras++;
                }
            }
        }
        if(!correcto||!pal->letras){
            correcto=false;
            printf("\aLa palabra no esta bien escrita");
            getchar();
        }
        system("cls");
    }while(!correcto);
    //Operador new: inicializa un puntero con un array.
    pal->adivinado=new bool[pal->letras];
    for(i=0;i<pal->letras;i++) pal->adivinado[i]=false;
}

void DibujarAhorcado(int fallas)
{
    if(fallas<0||fallas>6) return;
    printf("+----+\n|/   |\n|    ");
    if(fallas>=1) printf("O");
    printf("\n|   ");
    if(fallas>=2) printf("/");
    if(fallas>=3) printf("|");
    if(fallas>=4) printf("\\");
    printf("\n|   ");
    if(fallas>=5) printf("/ ");
    if(fallas>=6) printf("\\");
    printf("\n+----+\n");
}

void EscribirPalabra(Palabra *pal)
{
    int i,j;
    for(i=0,j=0;i<strlen(pal->palabra);i++){
        if(pal->palabra[i]==' ') printf(" ");
        else{
            if(pal->adivinado[j]) printf("%c",pal->palabra[i]);
            else printf("-");
            j++;
        }
    }
}

char PulsarLetra()
{
    char Pulsado;
    do{
        Pulsado=getch();
    }while(!isalpha(Pulsado)&&Pulsado!='1'&&Pulsado!='0');
    if(isupper(Pulsado))
        Pulsado=tolower(Pulsado);
    return Pulsado;
}
    
int main()
{
    int i,j,fallas;
    bool alfabeto[26],terminado,adivinado;
    char adivinar[81];
    char LetraPulsada;
    Palabra palabra;
    int ganadas=0,perdidas=0;
    
    do{
        fallas=0;
        terminado=false;
        for(i=0;i<26;i++) alfabeto[i]=false;
        system("cls");
        InicializarPalabra(&palabra);
        
        while(!terminado){
            system("cls");
            printf("Ganadas: %d\tPerdidas: %d\n\n",ganadas,perdidas);
            DibujarAhorcado(fallas);
            printf("\nLa frase es: ");
            EscribirPalabra(&palabra);
            printf("\n\nLetras pulsadas:\n");
            for(i=0;i<26;i++){
                if(alfabeto[i]) printf("%c - ",(i+97));
            }
            printf("\n\nPulse una letra, '1' para adivinar la palabra o '0' para salir: ");
            LetraPulsada=PulsarLetra();
            printf("%c\n\n",LetraPulsada);
            
            switch(LetraPulsada){
                case '0':
                    printf("La frase era:\n%s",palabra.palabra);
                    getchar();
                    terminado=true;
                    break;
                case '1':
                    printf("Que frase piensas que es?\n");
                    gets(adivinar);
                    for(i=0;i<strlen(adivinar);i++)
                        if(isupper(adivinar[i])) adivinar[i]=tolower(adivinar[i]);
                    if(!strcmp(adivinar,palabra.palabra)){
                        printf("\n\aAcertaste, FELICITACIONES!!!",palabra.palabra);
                        getchar();
                        ganadas++;
                        terminado=true;
                    }
                    else{
                        printf("\nMal, la frase era:\n%s",palabra.palabra);
                        getchar();
                        perdidas++;
                        terminado=true;
                    }
                    break;
                default:
                    if(!alfabeto[((int)LetraPulsada)-97]){ //ya que la 'a' es igual a 97 en el ASCII
                        system("cls");
                        alfabeto[((int)LetraPulsada)-97]=true;
                        adivinado=false;
                        for(i=0,j=0;i<strlen(palabra.palabra);i++){
                            if(palabra.palabra[i]!=' '){
                                if(palabra.palabra[i]==LetraPulsada){
                                    palabra.adivinado[j]=true;
                                    palabra.letras--;
                                    adivinado=true;
                                }
                                j++;
                            }
                        }
                        if(!adivinado){
                            fallas++;
                            if(fallas>=6){
                                DibujarAhorcado(fallas);
                                printf("\nPerdiste, la frase era:\n%s",palabra.palabra);
                                getchar();
                                perdidas++;
                                terminado=true;
                            }
                        }
                        if(adivinado&&palabra.letras<=0){
                            DibujarAhorcado(fallas);
                            printf("\nLa frase es: %s\n\n\aGanaste, FELICITACIONES!!!",palabra.palabra);
                            getchar();
                            ganadas++;
                            terminado=true;
                        }
                    }
                    else{
                        printf("Ya haz pulsado esa letra");
                        getchar();
                    }
                    break;
            }
        }
        delete palabra.adivinado;
    }while(LetraPulsada!='0');
    
    return 0;
}
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

Avatar de Usuario
v4r3t
Mensajes: 103
Registrado: 06/03/2007 12:00 am

#30 Mensaje por v4r3t » 27/08/2008 5:54 pm

No dudo de que tu programa (eagleoneraptor) vaya de maravilla, el problema es que has utilizado la librería conio.h, que no es estándar y algunos de nosotros no podremos compilar el programa para porbarlo, simplemente eso. No digo que lo vuelvas a hacer para adaptarlo, le echaremos un vistazo al código.
-=v4r3t=-

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados