Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Una variable no cambia de valor.

Estas en el tema de Una variable no cambia de valor. en el foro de C/C++ en Foros del Web. Hola amigos mios. Estoy trabajando en un juego. Es muy simple, solo tiene una nave que manejo yo, una nave que maneja la compu (esa ...
  #1 (permalink)  
Antiguo 30/09/2012, 09:58
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Una variable no cambia de valor.

Hola amigos mios.

Estoy trabajando en un juego. Es muy simple, solo tiene una nave que manejo yo, una nave que maneja la compu (esa todavia no funciona muy bien, solo sigue la linea de la mia, aun esa tampoco dispara).

Mi nave se mueve bien, y la de mi enemigo tambien. Pero tengo un problema. El sistema de disparos. Mi nave tiene dos variables. "x" y "y". Entonces, asocie a esa variable x para que desde ese punto salieran los disparos.

Y vaya sorpresa. Los disparos siempre salian desde el lugar donde al principio aparece la nave.

Otro problema que tengo es que va muy lento en mi compu. Tengo un procesador de 3,60GigaHertz, Un giga y medio de Ram (si, lo se, es bastante poco), y no tengo placa de video alguna, solo una Inetl Graphics Media Accelerator 950.

Mi procesador es un Intel Pentium 4.641 de tecnologia HT. Pero el juego es muy lento, o sea los graficos se mueven lento en la pantalla.

Nota: Tambien lo he probado en otra compu que tiene una placa de video de normal a buena, con un procesador mas o menos igual y 4 Gb de Ram, ahi anda un poco mejor, pero tampoco demasiado.

Funciona con SDL. Dejo el codigo. Cualquier otro error que encuentren, por favor me lo avisan y explican!!

/*Dejo chocolates y Codigo*/

Cita:

//Flier Land Rover por Alejandro*/
/*El programa genera un auto, y permite moverlo por la pantalla. Ademas, prende y apaga la luz de retroceso si retrocede,
y el audio aun no funciona, pero estoy haciendo un code para un juego.*/

#include <stdio.h>
#include "SDL.h"
//#include <SDL_mixer.h>
const int WINDOW_WIDTH = 1020;//altura de ventana
const int WINDOW_HEIGHT = 709;//ancho de ventana
const char* WINDOW_TITLE = "Flier Land Rover";//titulo de ventana
void destruccion();/*Averigua si el vehiculo toca tierra.*/
int x, y;//posicion inicial de el vehiculo
int c, d;//posicion inicial de enemigo
int balax, balay;//posicion de bala1

SDL_Surface *image;//Landi con luz normal
SDL_Surface *image2;//Landi con luz blanca
SDL_Rect dest;//Posicion de superficie cuadrada que contiene el BMP
bool gameRunning = true;//Variable que mantiene el loop
SDL_Rect found;//Superficie de fondo.
SDL_Surface *fondo;//Apuntador a la superficie Fondo.
SDL_Surface *bala;//Apuntador a la superficie cuadradobala
SDL_Rect cuadradobala;//Superficie CuadradoBala.
void salir();//Cierra el Loop en caso de que el user aprete Esc.
void movimiento();//Funcion que mueve el vehiculo de acuerdo a las teclas presionadas.
bool luz_blanca = false;//Maneja el apagado y encendido de luces blancas.
bool disparo = false;
SDL_Surface *enemigo;//Superficie de enemigo
SDL_Rect enemigoc;//Cuadrado donde esta el enemigo;
void movenemigo();//Mueve el enemigo, siguiendo al Landi.(Nota, falta agregar sistema detector de disparos.
SDL_Event event;
//int canal;

int main(int argc, char **argv)

{
FILE *fp;
fp = fopen("Variables.txt","w");
x = 100;
y = 100;
c = 600;
d = 200;
balax = x;
balay = y;



SDL_Init( SDL_INIT_VIDEO |SDL_INIT_AUDIO);
SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0,SDL_HWSURFACE | SDL_DOUBLEBUF /*| SDL_FULLSCREEN*/);//Inicia la ventana
SDL_WM_SetCaption( WINDOW_TITLE, 0 );





image = SDL_LoadBMP("LandRover2.bmp");
image2 = SDL_LoadBMP("LandRover3.bmp");
SDL_SetColorKey(image,SDL_SRCCOLORKEY|SDL_RLEACCEL ,SDL_MapRGB(image->format,255,255,255));
SDL_SetColorKey(image2,SDL_SRCCOLORKEY|SDL_RLEACCE L,SDL_MapRGB(image->format,255,255,255));
bala = SDL_LoadBMP("Bala.bmp");
while (gameRunning)//Inicio del Loop
{

found.x = 0;
found.y = 0;
found.h = image->h;
found.w = image->w;

fondo = SDL_LoadBMP("Fondo.bmp");
SDL_BlitSurface(fondo, NULL, screen, &found);

if(luz_blanca == false)
{
dest.x = x;
dest.y = y;
dest.w = image2->w;
dest.h = image2->h;


SDL_BlitSurface(image, NULL, screen, &dest);



//SDL_Flip(screen);

SDL_FreeSurface(screen);


}
else
{
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;


SDL_BlitSurface(image2, NULL, screen, &dest);



//SDL_Flip(screen);

SDL_FreeSurface(screen);
luz_blanca = false;

}


enemigo = SDL_LoadBMP("Avion.bmp");
enemigoc.x = c;
enemigoc.y = d;
enemigoc.w = enemigo->w;
enemigoc.h = enemigo->h;
SDL_SetColorKey(enemigo,SDL_SRCCOLORKEY|SDL_RLEACC EL,SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(enemigo, NULL, screen, &enemigoc);



SDL_Flip(screen);

SDL_FreeSurface(screen);

movimiento();//Mueve el Landi
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_SPACE] == 1)
{

/*balax = x;
balay = y;
cuadradobala.x = balax;
cuadradobala.y = balay;
cuadradobala.w = bala->w;
cuadradobala.h = bala->h;
SDL_SetColorKey(bala,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(bala, NULL, screen, &cuadradobala);
SDL_Flip(screen);

SDL_FreeSurface(screen);
balax = balax + 1;*/
disparo = true;
}
if(disparo == true)
{
cuadradobala.x = balax;
cuadradobala.y = balay;
cuadradobala.w = bala->w;
cuadradobala.h = bala->h;
SDL_SetColorKey(bala,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(bala, NULL, screen, &cuadradobala);
SDL_Flip(screen);

SDL_FreeSurface(screen);
balax = balax + 10;
if(balax >= 709)
{
disparo = false;
balax = x;
}
}
movenemigo();
destruccion();//Detecta si toca el Landi el piso. Si lo hace cierra el programa. Hay que generar la explosion.
(SDL_PollEvent(&event));
salir();//Cierra el programa en el caso de que Esc. sea apretado
fprintf(fp, "Posicion de vehiculo %d , %d",x, y);
}
fclose ( fp );



SDL_Quit();
return 0;
}

void movimiento()
{
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_UP] == 1 && y > 0)
{
y = y - 5;
}
if (keys[SDLK_DOWN] == 1 && y < 640)
{
y = y + 5;
}
if (keys[SDLK_LEFT] == 1 && x > 0)
{
x = x - 5;
luz_blanca = true;
}
if (keys[SDLK_RIGHT] == 1 && x < 790)
{
x = x + 5;
}


}
void destruccion()
{
if(y > 550)
{
gameRunning = false;
}
}

void salir()
{
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_ESCAPE] == 1)

{
gameRunning = false;
}

}
void movenemigo()
{
if(d < y)
{
d = d + 10;
}
if
(d > y)
{
d = d - 10;
}
}

  #2 (permalink)  
Antiguo 30/09/2012, 13:09
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Una variable no cambia de valor.

No me he mirado el codigo mucho, asi que del tema de los disparos no te hablo, cuando me lo mire mejor te digo.

Ahora sobre el tema de la rapidez del juego el problema es que no has implementado un controlador de FPS (frames per second), si esta no lo he visto.
Lo que tiene que hacer este controlador a grandes rasgos es calcular el tiempo que deberia estar el ordenador para cada vuelta al loop.
Tu programa actualmente lo que hace es hacerlo sin parar agotando al maximo los recursos del ordenador, es una cosa de las que tienes que cambiar mirate alguna cosa por google y si no lo entiendes te lo explico.


Saludos.
  #3 (permalink)  
Antiguo 30/09/2012, 17:31
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Una variable no cambia de valor.

Hola


Entiendo perfectamente el tema de los FPS. Pero por mas veces que intente acomodarlo en el programa sigue pasando excactamente lo mismo. Al principio anda de lujo, pero a los pocos segundos de hacerlo dar vueltas empieza a ir cada vez mas lento hasta que se cuelga y anda todo a saltitos. Ademas, mi pobre CPU ruge (o al menos eso escucho desde mi silla).

Dejo el codigo de nuevo.

Ademas, intente fijarme cuanto dura cada loop, pero no me anda. Empiezo a volverme loco, y no entiendo porque anda, deberia esperar, y no lo hace.

Saludos, y dejo el codigo de nuevo, con las modificaciones a ver si alguien encuentra el programa. Por favor, alguien lealo completo porque yo me canse de leerlo sin encontrar el problema.

Cita:

//Flier Land Rover por Alejandro*/
/*El programa genera un auto, y permite moverlo por la pantalla. Ademas, prende y apaga la luz de retroceso si retrocede,
y el audio aun no funciona, pero estoy haciendo un code para un juego.*/

#include <stdio.h>
#include "SDL.h"
#include <time.h>
//#include <SDL_mixer.h>
const int WINDOW_WIDTH = 1020;//altura de ventana
const int WINDOW_HEIGHT = 709;//ancho de ventana
const char* WINDOW_TITLE = "Flier Land Rover";//titulo de ventana
void destruccion();/*Averigua si el vehiculo toca tierra.*/
int x, y;//posicion inicial de el vehiculo
int c, d;//posicion inicial de enemigo
int balax, balay;//posicion de bala1

SDL_Surface *image;//Landi con luz normal
SDL_Surface *image2;//Landi con luz blanca
SDL_Rect dest;//Posicion de superficie cuadrada que contiene el BMP
bool gameRunning = true;//Variable que mantiene el loop
SDL_Rect found;//Superficie de fondo.
SDL_Surface *fondo;//Apuntador a la superficie Fondo.
SDL_Surface *bala;//Apuntador a la superficie cuadradobala
SDL_Rect cuadradobala;//Superficie CuadradoBala.
void salir();//Cierra el Loop en caso de que el user aprete Esc.
void movimiento();//Funcion que mueve el vehiculo de acuerdo a las teclas presionadas.
bool luz_blanca = false;//Maneja el apagado y encendido de luces blancas.
bool disparo = false;
SDL_Surface *enemigo;//Superficie de enemigo
SDL_Rect enemigoc;//Cuadrado donde esta el enemigo;
void movenemigo();//Mueve el enemigo, siguiendo al Landi.(Nota, falta agregar sistema detector de disparos.
SDL_Event event;
//int canal;

int main(int argc, char **argv)

{
clock_t inicio, fin;

FILE *fp;
fp = fopen("Variables.txt","w");
x = 100;
y = 100;
c = 600;
d = 200;
balax = x;
balay = y;
int milisegundosloop;


SDL_Init( SDL_INIT_VIDEO |SDL_INIT_AUDIO);
SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0,SDL_HWSURFACE | SDL_DOUBLEBUF /*| SDL_FULLSCREEN*/);//Inicia la ventana
SDL_WM_SetCaption( WINDOW_TITLE, 0 );





image = SDL_LoadBMP("LandRover2.bmp");
image2 = SDL_LoadBMP("LandRover3.bmp");
SDL_SetColorKey(image,SDL_SRCCOLORKEY|SDL_RLEACCEL ,SDL_MapRGB(image->format,255,255,255));
SDL_SetColorKey(image2,SDL_SRCCOLORKEY|SDL_RLEACCE L,SDL_MapRGB(image->format,255,255,255));
bala = SDL_LoadBMP("Bala.bmp");
while (gameRunning)//Inicio del Loop
{
inicio = clock();
milisegundosloop = SDL_GetTicks();
found.x = 0;
found.y = 0;
found.h = image->h;
found.w = image->w;

fondo = SDL_LoadBMP("Fondo.bmp");
SDL_BlitSurface(fondo, NULL, screen, &found);

if(luz_blanca == false)
{
dest.x = x;
dest.y = y;
dest.w = image2->w;
dest.h = image2->h;


SDL_BlitSurface(image, NULL, screen, &dest);



//SDL_Flip(screen);

SDL_FreeSurface(screen);


}
else
{
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;


SDL_BlitSurface(image2, NULL, screen, &dest);



//SDL_Flip(screen);

SDL_FreeSurface(screen);
luz_blanca = false;

}


enemigo = SDL_LoadBMP("Avion.bmp");
enemigoc.x = c;
enemigoc.y = d;
enemigoc.w = enemigo->w;
enemigoc.h = enemigo->h;
SDL_SetColorKey(enemigo,SDL_SRCCOLORKEY|SDL_RLEACC EL,SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(enemigo, NULL, screen, &enemigoc);



SDL_Flip(screen);

SDL_FreeSurface(screen);

movimiento();//Mueve el Landi
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_SPACE] == 1)
{

/*balax = x;
balay = y;
cuadradobala.x = balax;
cuadradobala.y = balay;
cuadradobala.w = bala->w;
cuadradobala.h = bala->h;
SDL_SetColorKey(bala,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(bala, NULL, screen, &cuadradobala);
SDL_Flip(screen);

SDL_FreeSurface(screen);
balax = balax + 1;*/
disparo = true;
}
if(disparo == true)
{
cuadradobala.x = balax;
cuadradobala.y = balay;
cuadradobala.w = bala->w;
cuadradobala.h = bala->h;
SDL_SetColorKey(bala,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(image->format,255,255,255));
SDL_BlitSurface(bala, NULL, screen, &cuadradobala);
SDL_Flip(screen);

SDL_FreeSurface(screen);
balax = balax + 10;
if(balax >= 709)
{
disparo = false;
balax = x;
}
}
movenemigo();
destruccion();//Detecta si toca el Landi el piso. Si lo hace cierra el programa. Hay que generar la explosion.
(SDL_PollEvent(&event));
salir();//Cierra el programa en el caso de que Esc. sea apretado
fprintf(fp, "Posicion de vehiculo %d , %d.\n Posicion de Vehiculo enemigo: %d, %d\n.Tiempo de duracion de frame: %f ",x, y, c, d,(fin - inicio)/CLK_TCK);
}
fclose ( fp );

milisegundosloop = SDL_GetTicks() - milisegundosloop; //obtenemos el tiempo que ha pasado
if(milisegundosloop < 110)
{ //si aun sobra tiempo hasta llegar a los 30 ms
SDL_Delay( Uint32(110 - milisegundosloop) ); //vete a dormir durante 30-x milisegundos

fin = clock();
}

SDL_Quit();
return 0;
}

void movimiento()
{
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_UP] == 1 && y > 0)
{
y = y - 5;
}
if (keys[SDLK_DOWN] == 1 && y < 640)
{
y = y + 5;
}
if (keys[SDLK_LEFT] == 1 && x > 0)
{
x = x - 5;
luz_blanca = true;
}
if (keys[SDLK_RIGHT] == 1 && x < 790)
{
x = x + 5;
}


}
void destruccion()
{
if(y > 550)
{
gameRunning = false;
}
}

void salir()
{
Uint8 *keys;
keys=SDL_GetKeyState(NULL);
if (keys[SDLK_ESCAPE] == 1)

{
gameRunning = false;
}

}
void movenemigo()
{
if(d < y)
{
d = d + 10;
}
if
(d > y)
{
d = d - 10;
}
}
Por favor, ayuda. /*Se arrastra por el piso suplicando*/ Saludos!
  #4 (permalink)  
Antiguo 01/10/2012, 10:27
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Una variable no cambia de valor.

Bueno, antes de todo te voy a hacer una recomendacion, no te lo tomes a mal xD

Procura escribir un codigo mas claro, me explico, el codigo que has escrito se entiende, pero cuesta lo suyo entenderlo y es un tanto complicado de leer. Recuerda que tienes que hacer codigo que cualquier programador pueda entender. Pero vamos esto se gana trabajando en cualquier proyecto de open source en el cual te pegaran la bronca, en el buen sentido, por escribir un codigo dificil de leer (esto me paso a mi xDD)


Bueno vamos a tu problema:

Creo haber entendido como funciona tu programa y el error del disparo es un error simple, pero que por culpa de todas las variables que hay en uso se hace un caos.

El problema es que tienes dos variables (balax y balay) estas variables son las encargadas de la posicion de la bala que luego son pasadas al rectangulo. Tienes varias cosas en el codigo que sobran pero vamos, primero que funcione y luego lo demas.

Bueno el problema que creo que tiene tu programa es que estas variables que deberian variar segun la posicion del coche(he entendido yo del programa) permanecen invariables durante todo el programa y esto es lo que hace que la bala salga siempre del mismo sitio, ya que se usan estas variables para designar el origen del disparo.

La solucion=> Debes hacer que estas variables varien segun la posicion del automovil. Por lo tanto cada vez que hagas un disparo debes hacer
Código C:
Ver original
  1. balax = x;
  2. balay = y;
y esto creo yo deberia solucionar el problema.



PD: Un consejo, ademas de hacer el codigo claro, en el game loop yo creo que es mas claro si se hace en este orden
Código C:
Ver original
  1. gameloop
  2. {
  3.     eventos();
  4.     logica();
  5.     render();
  6. }

No tienes porque hacerlo asi, el orden da lo mismo, pero yo creo que queda mucho mas claro, pero vamos.


Saludos.
  #5 (permalink)  
Antiguo 01/10/2012, 12:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Una variable no cambia de valor.

Gracias de antemano.

Jeje, y yo ya me lo venia echando en cara desde el principio.

Hasta hace muy poco empece con el tema de las clases en C++. Y como ya tenia todo el codigo hecho, dije "Lo hago sin clases y ta."

Esta sumamente desprolijo e inentendible, hasta a mi, su creador, me cuesta leerlo, jaja.

Que es Open Source?

Una duda con el tema del Game Loop. Tu dices que haga tres funciones gigantescas, una que se encargue de los eventos que mueven la nave mia, luego la logica, y finalmente el render (que no estoy seguro de que es), o que lo organice al codigo de esa manera, o sea que los sectores que se encargan de los eventos esten arriba, y los de la logica abajo, y el render abajo del todo?


Porque en el caso de ser las tres funciones gigantescas, intente hacerlo, pero me daba problemas con la variable screen. No estoy seguro de porque, simplemente no me permitia ese tema. Sino desde antes ya hubiera hecho que el codigo fueran solo funciones, imaginate como queda mi pobre cerebro despues de leer mis desastres, jeje.

Voy a probar el tema de los disparos.

Y ¿No sabes que es lo que tiene de mal mi controlador de Frames por segundo? Porque ese fue es el problema mas grande que tuve hasta ahora.

Gracias por todo, por gente como vos nosotros los novatos aprendemos.
  #6 (permalink)  
Antiguo 01/10/2012, 13:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Una variable no cambia de valor.

Bien, codigo probado. Ahora anda de lujo. Las balas salen de donde deben.

Sin embargo, aun tengo el problema de los Frames Por Segundo. Al parecer, el sistema para frenar un poco la velocidad no anda, y la maquina se termina colgando a los pocos minutos de juego. Ni siquiera para con ponerle directo el Delay. Ahora voy a comprobar un par de cosas mas y a seguir buscando en internet para ver como solucionar el problema. Pero si me lo podes explicar vos saltaria de contento, jaja.

Otro problema que tengo es que por alguna razon no puedo hacer funciones que manejen graficos, es decir, que tengan alguna variable grafica. El claro ejemplo es screen, no me deja trabajar con la pantalla principal. Seria mas simple mi codigo si fueran unas cinco funciones que hacen todo.

Ah, y si de yapa, me decis como optimizarlo te karmeo positivamente hasta que no me ande el mouse.

Saludos!
  #7 (permalink)  
Antiguo 29/10/2012, 21:49
 
Fecha de Ingreso: octubre-2012
Ubicación: Lima
Mensajes: 31
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Una variable no cambia de valor.

Cita:
Iniciado por harryarcoiris Ver Mensaje
Bien, codigo probado. Ahora anda de lujo. Las balas salen de donde deben.

Sin embargo, aun tengo el problema de los Frames Por Segundo. Al parecer, el sistema para frenar un poco la velocidad no anda, y la maquina se termina colgando a los pocos minutos de juego. Ni siquiera para con ponerle directo el Delay. Ahora voy a comprobar un par de cosas mas y a seguir buscando en internet para ver como solucionar el problema. Pero si me lo podes explicar vos saltaria de contento, jaja.

Otro problema que tengo es que por alguna razon no puedo hacer funciones que manejen graficos, es decir, que tengan alguna variable grafica. El claro ejemplo es screen, no me deja trabajar con la pantalla principal. Seria mas simple mi codigo si fueran unas cinco funciones que hacen todo.

Ah, y si de yapa, me decis como optimizarlo te karmeo positivamente hasta que no me ande el mouse.

Saludos!
Yo tambien estaba entranto en esto de los juegos y dime ... en que ide estas trabajando ? y el juego es 2d?. saludos
__________________
Lo mas curioso en esta vida es que todo se hace mas simple cuando lo divides de 2 en 2.
  #8 (permalink)  
Antiguo 26/10/2013, 10:32
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Una variable no cambia de valor.

Nota, ya arregle este problema, es simplemente declarar de forma externa la variable, como global... es sencillo... Para oscar mariano, en Dev C++ y el juego es en 2D
__________________
Mi pagina Web: http://www.actiweb.es/simplecreations/
Desarrollo de Juegos para PC en 2D
  #9 (permalink)  
Antiguo 26/10/2013, 14:46
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Una variable no cambia de valor.

Tu código es así o se perdió la indentación al pegarlo acá?

Etiquetas: 2dgame, auxilio, c++, funciones, juego, sdl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:15.