elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Programación / Programación C/C++ / que librerias me faltan??? en: 14 Marzo 2012, 23:34 pm
hola a todos...
me podriais decir que bibliotecas me faltan para el siguiente codigo???
Código:
/*La mansión del terror
programación de videojuegos con SDL*/

//abrimos librerias

#include <SDL/SDL.h>


//definicion de estructura de datos
#define HUESO 1
#define LLAVE 2
#define ESCALERA 3
#define PERRO 4

// Estructuras de datos para los objetos
struct objeto {
int estado; // Estado del objeto
char desc1[80]; // Descripción para estado 1
char desc2[80]; // Descripción para estado 2
int hab; // Habitación en la que se encuentra
int lotengo; // Indica si tengo este objeto en mi inventario
} objetos[5];
// Estructura de datos para las habitaciónes
struct habitacion {
char desc[255];
int norte;
int sur;
int este;
int oeste;
} habitaciones[10];
      
int main(){
     /*inicialización de estructura de datos*/
    
     //inicialización de objetos
     // hueso
objetos[HUESO].estado=1;
strcpy(objetos[HUESO].desc1,"un hueso");
strcpy(objetos[HUESO].desc2,"un hueso");
objetos[HUESO].hab=2;
objetos[HUESO].lotengo=0;
// llave
objetos[LLAVE].estado=1;
strcpy(objetos[LLAVE].desc1,"una llave sobre la lampara");
strcpy(objetos[LLAVE].desc2,"una llave sobre la lampara");
objetos[LLAVE].hab=3;
objetos[LLAVE].lotengo=0;
// escalera
objetos[ESCALERA].estado=1;
strcpy(objetos[ESCALERA].desc1,"una escalera");
strcpy(objetos[ESCALERA].desc2,"una escalera");
objetos[ESCALERA].hab=9;
objetos[ESCALERA].lotengo=0;
// perro
objetos[PERRO].estado=1;
strcpy(objetos[PERRO].desc1,"un perro rabioso");
strcpy(objetos[PERRO].desc2,"un perro comiendose un hueso");
objetos[PERRO].hab=9;
objetos[PERRO].lotengo=0;
    
     /*datos del mapa*/
// Habitación 1
strcpy(habitaciones[1].desc,"Estas en una pequeña habitación pintada de blanco. Junto a tipuedes ver una cama y una mesita de noche.");
habitaciones[1].norte=0;
habitaciones[1].sur=4;
habitaciones[1].este=0;
habitaciones[1].oeste=0;
// Habitación 2
strcpy(habitaciones[2].desc,"Estas en una habitación pintada de verde. Junto a ti puedes veruna cama y una mesita de noche.");
habitaciones[2].norte=0;
habitaciones[2].sur=5;
habitaciones[2].este=0;
habitaciones[2].oeste=0;
// Habitación 3
strcpy(habitaciones[3].desc,"Estas en el salón de la casa. Puedes ver una gran mesa rodeadade sillas.");
habitaciones[3].norte=0;
habitaciones[3].sur=6;
habitaciones[3].este=0;
habitaciones[3].oeste=0;
// Habitación 4
strcpy(habitaciones[4].desc,"Estas en el pasillo.");
habitaciones[4].norte=1;
habitaciones[4].sur=7;
habitaciones[4].este=5;
habitaciones[4].oeste=0;
     // Habitación 5
strcpy(habitaciones[5].desc,"Estas en el pasillo.");
habitaciones[5].norte=2;
habitaciones[5].sur=8;
habitaciones[5].este=6;
habitaciones[5].oeste=4;
// Habitación 6
strcpy(habitaciones[6].desc,"Estas en el pasillo.");
habitaciones[6].norte=3;
habitaciones[6].sur=9;
habitaciones[6].este=0;
habitaciones[6].oeste=5;
// Habitación 7
strcpy(habitaciones[7].desc,"Estas en el típico servicio, con sus típicas piezas.");
habitaciones[7].norte=4;
habitaciones[7].sur=0;
habitaciones[7].este=0;
habitaciones[7].oeste=0;
// Habitación 8
strcpy(habitaciones[8].desc,"Estas en la entrada de la casa. Puedes ver la puerta cerrada.");
habitaciones[8].norte=5;
habitaciones[8].sur=0;
habitaciones[8].este=0;
habitaciones[8].oeste=0;
// Habitación 9
strcpy(habitaciones[9].desc,"Estas en la cocina.");
habitaciones[9].norte=6;
habitaciones[9].sur=0;
habitaciones[9].este=0;
habitaciones[9].oeste=0;
/***
Inicialización del estado de juego.
***/
// variable que indica la habitación en la que estamos
int habitacionActual = 1;
// variable que indica cuantos objetos hay
int nobjetos = 4;
/***
game loop
***/
char verbo[30], nombre[30];
int i, accion;
int done = 0;
while (!done) {
// Mostramos información de la habitación.
// Descripción
printf("\n\n%s",habitaciones[habitacionActual].desc);
// Mostramos si hay algun objeto
for (i=1 ; i<=nobjetos ; i++) {
if (objetos[i].hab == habitacionActual) {
printf("\nTambien puedes ver ");
// mostramos la descripción del objeto según su estado
if (objetos[i].estado == 1) {
printf("%s",objetos[i].desc1);
} else {
printf("%s",objetos[i].desc2);
}
}
}
// Mostramos las posibles salidas
printf("\nPuedes ir dirección ");
if (habitaciones[habitacionActual].norte != 0)
printf ("Norte ");
if (habitaciones[habitacionActual].sur != 0)
printf ("Sur ");
if (habitaciones[habitacionActual].este != 0)
printf ("Este ");
if (habitaciones[habitacionActual].oeste != 0)
printf ("Oeste ");
// Leemos la entrada del jugador
printf("\n>>> ");
scanf("%s%s",verbo,nombre);
// Procesamos la entrada del jugador
// coger
if (!strcmp(verbo,"coger")) {
accion = 0;
// Hueso
if (!strcmp(nombre,"hueso") && objetos[HUESO].hab == habitacionActual) {
accion = 1;
objetos[HUESO].hab=0;
objetos[HUESO].lotengo=1;
printf("\nHas cogido el hueso.");
}
// Llave
if (!strcmp(nombre,"llave") && objetos[LLAVE].hab == habitacionActual) {
accion = 1;
// para coger la llave necesitamos la escalera
if (objetos[ESCALERA].lotengo == 1) {
objetos[LLAVE].hab=0;
objetos[LLAVE].lotengo=1;
printf("\nTras subirte a la escalera, alcanzas la llave.");
} else {
printf("\nNo alcanzo la llave. Está demasiado alta.");
}
}
// Escaleras
if (!strcmp(nombre,"escalera") && objetos[ESCALERA].hab == habitacionActual) {
accion = 1;
if (objetos[PERRO].estado == 2) {
objetos[ESCALERA].hab=0;
objetos[ESCALERA].lotengo=1;
printf("\nHas cogido las escaleras.");
} else {
printf("\nEl perro gruñe y ladra y no te deja cogerlo.");
}
}
if (accion == 0)
printf("\nNo puedes hacer eso.");
}
// dar
if (!strcmp(verbo,"dar")) {
accion = 0;
// Hueso
if (!strcmp(nombre,"hueso") && objetos[HUESO].lotengo == 1 && objetos[PERRO].hab ==
habitacionActual) {
accion = 1;
objetos[HUESO].lotengo=0;
objetos[PERRO].estado=2;
printf("\nEl perro coge el hueso y se retira a comerselo tranquilamente.");
}
if (accion == 0)
printf("\nNo puedes hacer eso.");
}
// usar
if (!strcmp(verbo,"usar")) {
accion = 0;
// Hueso
if (!strcmp(nombre,"llave") && objetos[LLAVE].lotengo == 1 && habitacionActual == 8) {
accion = 1;
printf("\nENHORABUENA!!! Has escapado de la mansión del terror.");
done = 1;
}
if (accion == 0)
printf("\nNo puedes hacer eso.");
}
// ir
if (!strcmp(verbo,"ir")) {
accion = 0;
// norte
if (!strcmp(nombre,"norte") && habitaciones[habitacionActual].norte != 0) {
accion = 1;
habitacionActual=habitaciones[habitacionActual].norte;
}
// sur
if (!strcmp(nombre,"sur") && habitaciones[habitacionActual].sur != 0) {
accion = 1;
habitacionActual=habitaciones[habitacionActual].sur;
}
// este
if (!strcmp(nombre,"este") && habitaciones[habitacionActual].este != 0) {
accion = 1;
habitacionActual=habitaciones[habitacionActual].este;
}
// oeste
if (!strcmp(nombre,"oeste") && habitaciones[habitacionActual].oeste != 0) {
accion = 1;
habitacionActual=habitaciones[habitacionActual].oeste;
}

if (accion == 0)
printf("\nNo puedes hacer eso.");
}
}

return 0;
 }

12  Programación / Programación C/C++ / duda sobre SDL en: 13 Marzo 2012, 22:18 pm
hola a todos...
os explico mi duda...
tengo un codigo en el que imprime una imagen de fondo i al presionar las teclas de "arriba, abajo, derecha e izquierda" se mueve un muñequito... pues bien... lo que queria acer es que en vez de mover el muñequito, que la imagen de fondo canvie una imagen por otra, es decir que al presionar por ejemplo el boton de arriba vaya canviando de imagenes

Código:
#include <stdlib.h>
#include <SDL/SDL.h>
 
 int main(int argc, char *argv[])
{
 SDL_Surface *screen;
 SDL_Surface *fondo;
 SDL_Surface *protagonista;
 SDL_Rect destino;
int i, j;
int xProt = 320, yProt= 400;
int terminado = 0;
SDL_Event suceso;
Uint8* teclas;


 /* Tratamos de inicializar la biblioteca SDL (important posar-ho)*/
 if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
exit(1);
}/*SDL_INIT_VIDEO
   SDL_INIT_AUDIO
   SDL_INIT_TIMER
   SDL_INIT_CDROM
   SDL_INIT_JOYSTICK
   SDL_INIT_EVERYTHING*/
   /*per afegir-ne mes al costat de cada nom es separa per un
   |
   que es posa apretant "Alt Gr" + 1**/

 /* Preparamos las imagenes a mostrar */
 fondo = SDL_LoadBMP("fondo.bmp");
protagonista = SDL_LoadBMP("fondo3.bmp");

 /* Si todo ha ido bien, hacemos algo:
entrar a modo grafico y cambiar el título de la ventana */
screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE );
 if(screen == NULL) {
 printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() );
SDL_Quit();
return -1;/*SDL_SWSURFACE--->Crear la superficie de video en la memoria principal
            SDL_HWSURFACE--->Crea la superficie en la memoria de vídeo
            SDL_ASYNCBLIT--->Modo de blit asíncrono. Mejora el rendimientoen
                             máquinas con más de un procesador, unque puede
                             disminuir en máquinas con una sólo procesador
            SDL_ANYFORMAT--->Fuerza el uso de los bpp de la surface actual.
                             Hay que usarlo cuando queramos crear la superficie
                             en una ventana
            SDL_HWPALETTE--->Da a SDL acceso exclusivo a la paleta de color
            SDL_DOUBLEBUF--->Sólo válido con SDL_HWSURFACE. Permite el uso de
                             doble buffer
            SDL_FULLSCREEN-->Intenta poner el modo a pantalla completa
            SDL_OPENGL------>Crea un contexto OpenGL en la superficie
            SDL_OPENGLBLIT-->Igual que el anterior, pero permite que SDL haga el
                             render 2D
            SDL_RESIZABLE--->Crea un ventana que puede cambiar de tamaño
            SDL_NOFRAME----->Crea una ventana pero sin borde*/
            
            /*per afegir-ne mes al costat de cada nom es separa per un
            |
            que es posa apretant "Alt Gr" + 1*/
   }

 /* Titulo de la ventana */
SDL_WM_SetCaption( "programa de procva!" , "Hola mundo" );

/* Parte repetitiva: hasta que se elija terminar */
 while(terminado == 0) {

 /* Dibujamos la imagen de fondo */
 /* Como tiene 207 x 211 pixeles, la repetimos varias veces */
for (i=0; i<3; i++)
for (j=0; j<3; j++) {
destino.x=207*i;
 destino.y=211*j;
SDL_BlitSurface(fondo, NULL, screen, &destino);
  }

/* Dibujamos el protagonista */
destino.x=xProt;
  destino.y=yProt;
  SDL_BlitSurface(protagonista, NULL, screen, &destino);

      /* Actualizamos la pantalla */
    SDL_Flip(screen);

     /* Miramos si hay algun suceso pendiente,
       entre ellos, peticion de abandonar el programa
         (pulsar la X de la ventana) o tecla ESC */
    while (SDL_PollEvent(&suceso)) {
        if (suceso.type == SDL_QUIT)    terminado = 1;
          if (suceso.type == SDL_KEYDOWN)
           if (suceso.key.keysym.sym == SDLK_ESCAPE)  terminado = 1;
        }

        /* Vemos el estado indivudal de las demas teclas */
      teclas = SDL_GetKeyState(NULL);
         if (teclas[SDLK_UP]) { yProt -= 2; }
  if (teclas[SDLK_DOWN]) { yProt += 2; }
       if (teclas[SDLK_LEFT]) { xProt -= 3; }
     if (teclas[SDLK_RIGHT]) { xProt += 3; }
 
    /* Y esperamos 50 ms antes de repetir */
        SDL_Delay( 50 );
}
 
 /* Finalmente, preparamos para salir */
  SDL_Quit();
   return 0;
 }

EI: juntando mensajes.

o mejor dicho...
Código:
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
/* se incluye SDL_image.h para los metodos de
carga de imagenes */
#include <SDL/SDL_image.h>
/* metodo que permite cargar imagenes y las devuelve
como SDL_Surface */
SDL_Surface* cargarImagen(char *nombreArchivo)
{
/* SDL tiene metodos para cargar cada tipo de imagen
BMP,PCX,JPG,GIF,etc. pero este metodo (IMG_Load())
automaticamente carga imagenes sin preguntar el tipo*/
SDL_Surface *image = IMG_Load(nombreArchivo);
return image;
}
/* metodo que permite dibujar una *imagen previamente cargada
(con cargarImagen()), y dibujarla en una superficie dada
(en este caso *screen), en la posicion (x,y)*/
void dibujaImagen(SDL_Surface *screen, SDL_Surface *imagen, int x, int y)
{
/* se crea un rectangulo */
SDL_Rect rect;
/* se le asigna donde empieza en x el rectangulo */
rect.x=x;
/* se le asigna donde empieza en y el rectangulo */
rect.y=y;
/* se pega la imagen sobre screen de acuerdo a
la posicion del rectangulo */
SDL_BlitSurface(imagen, 0, screen, &rect);
}
int main(int argc, char *argv[])
{
SDL_Surface* screen;
if (SDL_Init(SDL_INIT_VIDEO)<0)
{
printf("Error al iniciar SDL:: %s",SDL_GetError());
return -1;
}
screen = SDL_SetVideoMode(640,480,16,SDL_HWSURFACE|SDL_RESIZABLE);
if (!screen)
{
printf("Error al iniciar el contexto SDL:: %s",SDL_GetError());
return -1;
}
SDL_WM_SetCaption(":: Carga de imagen con SDL ::",NULL);
/* llamamos al metodo para que cargue la imagen "foto.jpg" */
SDL_Surface* img = cargarImagen("foto.jpg");
/* preguntamos si realmente se cargo la imagen */
if (!img)
{
/* si nose cargo, salimos del programa */
printf("No se pudo cargar la imagen: %s",SDL_GetError());
return -1;
}
/* llamamos al otro metodo para que dibuje la imagen (*img)
sobre nuestra superficie buffer (*screen), en la posicion
100,100
*/
dibujaImagen(screen, img, 100, 100);
/* Este metodo tomara todos los cambios que se han hecho sobre
la superficie buffer(*screen), y las desplegara por pantalla
*/
SDL_Flip(screen);
SDL_Delay(5000);
return 1;
}

que al presionar la tecla que canvie de imagen
13  Programación / Programación C/C++ / duda en: 18 Diciembre 2011, 19:09 pm
teniendo el siguiente codigo...
Código:
#include <stdio.h> 
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>

int main(void)
{
   int ch;
   
   do {
      ch = getch();
     
      switch (ch){
             
      case 'a':
         puts("opcion 1");
         getch();
         
         break;
      case 'd':
         puts("opcion 2");
         getch();
         break;
         
      case 's':
         puts("opcion 3");
         getch();
         break;
         
      case 'w':
         puts("opcion 4");
         getch();
         break;
         
      default:
         puts("Tecla no valida!");
         break;
      }
   }while (toupper(ch) != 'S');
   
   return EXIT_SUCCESS;
}

TENGO 1 DUDAS...
como puedo acer para que cada vez que presiono una de las teclas "a", "d", "s", "w" me aparezca un texto diferente al anterior???

por ejemplo:
_En la primera vez que presione la tecla "a" me diga "opcion1", en la segunda vez "opcion5"
_En la primera vez que presione la tecla "d" me diga "opcion2", en la segunda vez "opcion6"
_Y asi sicesivamente...
14  Programación / Programación C/C++ / ayuda... tutorial getch en: 12 Diciembre 2011, 14:33 pm
HOLA A TODOS

me podrias dicir algun libro que explique como se usan los getch o por lo menos algun tutorial que lo explique???

GRACIAS

EI: juntando mensajes.

se me olvido decirlo...

en especial, para usar el
Código:
tecla=getch();
que si no me equivoco es para que al pulsar por ejemplo la letra "a" canvie un printf por otro (solo pulsando la letra "a")
15  Programación / Programación C/C++ / colores en: 11 Diciembre 2011, 22:35 pm
hola a todos

hoy buscando por internet me enteré de que se puede canviar el fondo o las letras en c++

ejemplo para el fondo
Código:
//Añadir
system("color a0");

ejemplo para la letra
Código:
//Añadir
system("color 0");

Y haora mis dos dudas...

1. COMO AGO PARA QUE EL FONDO SEA DE UN COLOR I LAS LETRAS DE OTRO (al mismo tiempo)

2. ENVEZ DEL FONDO... COMO AGO PARA QUE SOLO SE PINTE UN RECTANGULO EN EL MEDIO DE LA PANTALLA (donde yo elija donde poner el rectangulo y que yo elija la grandaria del rectangulo)
16  Programación / Programación C/C++ / el uso del teclado en c++ en: 10 Diciembre 2011, 21:45 pm
Hola a todos...
 
Me preguntaba si se puede acer lo siguiente en c++:

Al presionar una letra del abecedario en el teclado... que haga un enter sin tener que presionarlo

Si se puede... me podriais explicar como???

GRACIAS
17  Programación / Programación C/C++ / Criticas y mejoras para el juego de sopas de letras en: 9 Diciembre 2011, 21:03 pm
gracias a un post que ice anteriormente he podido acer un juego en el que ace una adivinanza y luego buscas la palabra que as ancertado en la sopas de letras.

PIDO PORFAVOR SUGERENCIAS PARA MEJORAR EL JUEGO

aquí os dejo mi codigo
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
 
void fn_programa_a();
void fn_programa_b();
 
int main()
{
        fn_programa_a();
        fn_programa_b();
 
        return 0;
}
 
void fn_programa_a()
{
              int i;
    char cadena1[40]="";
        char respuesta =0;
    do{
    printf("QUE PALABRA ES LA QUE BUSCAMOS?? \n \n");
    printf("PISTA: lo contrario de lleno\n\n");
    gets(cadena1);
    
    i= strcmp(cadena1,"vacio");
    if (i==0){
    printf("correcto\n\n\n\n\n\n");
    }

}
while ((respuesta =='s')||(respuesta == 'S'));
}
 
void fn_programa_b()
{
      int i;
    char cadena1[40]="";
        char respuesta =0;
    do{
    printf("ENCUENTRA LA PALABRA QUE ACERTASTE EN LA SOPA DE LETRAS \n \n");
    printf("cuando la encuentres... di entre que casillas se encuentra.\n");
    printf("Ejemplo: si empieza en la casilla 1j y termina en f1, pon 1J-F1\n\n\n\n\n");
    printf("numero de casillas --- 1-2-3-4-5-6-7-8-9-0 --- numero de casillas\n");
    printf("casillas A ----------- b-m-l-k-s-u-r-n-f-l --- A casilla\n");
    printf("casillas B ----------- m-o-s-z-l-k-s-t-u-r --- B casilla\n");
    printf("casillas C ----------- w-n-v-a-c-i-o-o-p-k --- C casilla\n");
    printf("casillas D ----------- s-t-a-u-v-m-q-i-e-v --- D casilla\n");
    printf("casillas E ----------- w-r-l-g-u-s-n-a-u-s --- E casilla\n");
    printf("casillas F ----------- d-c-j-h-n-z-i-i-m-l --- F casilla\n");
    printf("casillas G ----------- o-f-k-l-s-o-k-z-s-i --- G casilla\n");
    printf("casillas H ----------- e-r-g-d-p-u-m-p-u-d --- H casilla\n");
    printf("casillas I ----------- z-x-f-l-k-a-f-n-i-i --- I casilla\n");
    printf("casillas J ----------- m-u-w-a-f-n-i-l-d-p --- J casilla\n");
    printf("numero de casillas --- 1-2-3-4-5-6-7-8-9-0 --- numero de casillas\n");
    gets(cadena1);
    
    i= strcmp(cadena1,"C3-C7");
    if (i==0){
    printf("correcto\n\n\n\n\n\n");
    }

}
while ((respuesta =='s')||(respuesta == 'S'));


}
18  Programación / Programación C/C++ / calculadora + interrogatorio en: 1 Diciembre 2011, 22:51 pm
hoy estaba jugando a un juego de sumas... y me preguntaba que si se puede juntar los dos siguientes codigos

codigo 1
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
int main()
{
    unsigned long long int a,b;
     printf("primer numero:");
     scanf(" %llu", &a);
    
     printf("segon numero:");
     scanf(" %llu", &b);
    
     printf("el resultat es %llu", a+b);
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

codigo 2
Código:
*preguntes i respostes*/
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
int main (void)
{
 
    int i;
    char cadena1[40]="";
        char respuesta =0;
    do{
    printf("pregunta \n \n");
    printf("escriba la pregunta:  ");
    gets(cadena1);
    
    i= strcmp(cadena1,"cuantos años tengo");
    if (i==0){
    printf("10");
    }
    i= strcmp(cadena1,"de donde soy");
    if (i==0){
    printf("valencia");
    }

std::cout << "\n\ndesea continuar (S o N o C)?\n";
std::cin >> respuesta;
setbuf(stdin,NULL);
switch (respuesta){
      
case 's':
printf("ha salido con la respuesta s\n\n\n");
break;

case 'c':
printf("\nprograma creado por\nGUILLEM BORRAS I MARTI");
break;

case 'n':
printf("ha salido con la respuesta n");
return false;
break;
default:
 
printf("ha salido sin la letra n o s");
return false;
break;
 
}
}while ((respuesta =='s')||(respuesta == 'S'));
 
     getchar();
     return 0;
}

alguien me puede ayudar a juntarlos???

gracias de antemano
19  Programación / Programación C/C++ / libreria de csprite.h??? en: 30 Septiembre 2011, 22:27 pm
he intentado ejecutar un codigo que contiene
Código:
#include "csprite.h"

pero al ejecutar me dice "csprite.h: No such file or directory"
no se mucho ingles por eso e cogido el traductor i traducido me dice "csprite.h: No existe el fichero o directorio"

a caso tengo que instalar una libreria???
20  Media / Diseño Gráfico / .bmp y .png??? en: 24 Septiembre 2011, 18:32 pm
Revisando unos codigos por internet sobre codigos de juegos me fije i en unos tenia puesto donde se carga la imagen .bmp y en otros .png
QUE DIFERENCIA AY???
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines