Puck2099
08/08/2004, 19:57
Hola,
Bueno, tenía programados ya unos temporizadores para mi juego Samurai y en el "emulador" del VC++ va perfecto, pero lo compilo para la GP32 y me hace una cosa muy rara:
Donde tenía que mostrarse un String de 4 caracteres solo muestra los dos primeros (en el VC++ ya digo que lo hace bien) y no sé a qué se debe...
Os pego los trozos de código implicados en el asunto:
void Mostrar_Reloj (int tiempo, int timer, char reloj[4]) {
int minutos;
int segundos;
char seg_resto[2];
char min_resto[1];
minutos = timer / 60;
segundos = timer - minutos*60;
if (60 - segundos < 10) {
seg_resto[0] = '0';
switch (60-segundos) {
case 0:
seg_resto[1] = '0';
break;
case 1:
seg_resto[1] = '1';
break;
case 2:
seg_resto[1] = '2';
break;
case 3:
seg_resto[1] = '3';
break;
case 4:
seg_resto[1] = '4';
break;
case 5:
seg_resto[1] = '5';
break;
case 6:
seg_resto[1] = '6';
break;
case 7:
seg_resto[1] = '7';
break;
case 8:
seg_resto[1] = '8';
break;
case 9:
seg_resto[1] = '9';
break;
}
}
else if (60 - segundos == 60) {
seg_resto[0] = '0';
seg_resto[1] = '0';
}
else {
sprintf(seg_resto, "%d", 60-segundos);
}
if (segundos >0) {
sprintf(min_resto, "%d", tiempo-minutos-1);
}
else {
sprintf(min_resto, "%d", tiempo-minutos);
}
reloj[0] = min_resto[0];
reloj[1] = ':';
reloj[2] = seg_resto[0];
reloj[3] = seg_resto[1];
}
Se supone que lo que hace esa función es, a partir de un tiempo base (tiempo) y un temporizador (timer) hacer una especie de reloj metido en la string que también se le pasa como argumento.
Mostrar_Reloj (tiempo, temp1, cadena);
GpTextOut(NULL, &gpDraw[nflip], 260, 11, cadena, 0xC0);
Y esto tiene que mostrar el resultado de lo anterior en una posición específica de la pantalla.
Como digo, lo que muestra finalmente en la GP32 son los dos primeros caracteres de la string, es decir, el minuto y los dos puntos.
A lo mejor estoy obcecado con el código y no veo algo evidente, pero es que me está volviendo loco y por más que pruebo cosas no consigo arreglarlo.
A ver si arreglo esto y saco esta nueva versión a la luz...
Muchas gracias por la ayuda.
Bueno, tenía programados ya unos temporizadores para mi juego Samurai y en el "emulador" del VC++ va perfecto, pero lo compilo para la GP32 y me hace una cosa muy rara:
Donde tenía que mostrarse un String de 4 caracteres solo muestra los dos primeros (en el VC++ ya digo que lo hace bien) y no sé a qué se debe...
Os pego los trozos de código implicados en el asunto:
void Mostrar_Reloj (int tiempo, int timer, char reloj[4]) {
int minutos;
int segundos;
char seg_resto[2];
char min_resto[1];
minutos = timer / 60;
segundos = timer - minutos*60;
if (60 - segundos < 10) {
seg_resto[0] = '0';
switch (60-segundos) {
case 0:
seg_resto[1] = '0';
break;
case 1:
seg_resto[1] = '1';
break;
case 2:
seg_resto[1] = '2';
break;
case 3:
seg_resto[1] = '3';
break;
case 4:
seg_resto[1] = '4';
break;
case 5:
seg_resto[1] = '5';
break;
case 6:
seg_resto[1] = '6';
break;
case 7:
seg_resto[1] = '7';
break;
case 8:
seg_resto[1] = '8';
break;
case 9:
seg_resto[1] = '9';
break;
}
}
else if (60 - segundos == 60) {
seg_resto[0] = '0';
seg_resto[1] = '0';
}
else {
sprintf(seg_resto, "%d", 60-segundos);
}
if (segundos >0) {
sprintf(min_resto, "%d", tiempo-minutos-1);
}
else {
sprintf(min_resto, "%d", tiempo-minutos);
}
reloj[0] = min_resto[0];
reloj[1] = ':';
reloj[2] = seg_resto[0];
reloj[3] = seg_resto[1];
}
Se supone que lo que hace esa función es, a partir de un tiempo base (tiempo) y un temporizador (timer) hacer una especie de reloj metido en la string que también se le pasa como argumento.
Mostrar_Reloj (tiempo, temp1, cadena);
GpTextOut(NULL, &gpDraw[nflip], 260, 11, cadena, 0xC0);
Y esto tiene que mostrar el resultado de lo anterior en una posición específica de la pantalla.
Como digo, lo que muestra finalmente en la GP32 son los dos primeros caracteres de la string, es decir, el minuto y los dos puntos.
A lo mejor estoy obcecado con el código y no veo algo evidente, pero es que me está volviendo loco y por más que pruebo cosas no consigo arreglarlo.
A ver si arreglo esto y saco esta nueva versión a la luz...
Muchas gracias por la ayuda.