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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  el programa dejó de funconar correctamente por un problema.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 Ir Abajo Respuesta Imprimir
Autor Tema: el programa dejó de funconar correctamente por un problema.  (Leído 10,309 veces)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #20 en: 18 Septiembre 2016, 13:14 pm »

Tienes que localizar qué línea da el error. Para ello hay muchos métodos, y uno es tan simple como ver hasta donde funciona bien. Por ejemplo, con el main, pondrías:
Código
  1. int main(){
  2.    cout << 'a' << endl;
  3.    iniciar();
  4.    cout << 'b' << endl;
  5.    realizar_juego();
  6.    cout << 'c' << endl;
  7.    terminar();
  8.    cout << 'd' << endl;
  9. }

Al ejecutarlo, deberías ver por la consola, letras. Si sale una 'a', el error está en la función "iniciar()". Si sale "ab", el error está en "realizar_juego()", y etc.
¿Puedes poner aquí el código con los couts?
Código:
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
 
 
int iniciar();
void realizar_juego();
void terminar();
 
int iniciar(){
allegro_init();
install_keyboard();
set_color_depth(16);
if (set_gfx_mode(GFX_AUTODETECT,640,480,0,0)<0){
printf("error al iniciar el modo grafico\n");
allegro_exit();
exit(-1);
}
}
 
void terminar(){
allegro_exit();
}
int main(){
iniciar();
realizar_juego();
terminar();
}
END_OF_MAIN();
void realizar_juego(){
 
BITMAP *nave;
PALETTE paleta;
int x,y, x_anterior, y_anterior;
BITMAP * buffer;
 
 
nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
set_palette(paleta);
if (nave==NULL) terminar();
buffer=create_bitmap(nave->w,nave->h);
clear (buffer);
if (buffer==NULL) terminar();
x=SCREEN_W/2;
y=SCREEN_H/2;
 
while (!key[KEY_ESC]){
 
if (key[KEY_UP,KEY_W])
y--;
if (key[KEY_DOWN,KEY_S])
y++;
if (key[KEY_LEFT,KEY_A])
x--;
if (key[KEY_RIGHT,KEY_D])
x++;
 
if (x<0) x=x_anterior;
if (x>SCREEN_W-nave->w) x=x_anterior;
if (y<0) y=y_anterior;
if (y>SCREEN_H-nave->h) y=y_anterior;
if ((x_anterior!=x) || (y_anterior!=y)){
blit (buffer,screen, 0, 0, x_anterior, y_anterior,buffer->w,buffer->h);
blit (screen,buffer,x,y,0,0,buffer->w,buffer->h);
draw_sprite(screen,nave, x, y);
}
x_anterior=x;
y_anterior=y;
 
 
}
}
 


No tiene los couts ._.
Si lo haces, pon la librería iostream. También puedes hacerlo con printf (poniendo justo después de cada printf un fflush(stdout);


En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #21 en: 18 Septiembre 2016, 13:32 pm »

ostias que tonto pensé que poyoncio lo había puesto,
Código:
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
 
 
int iniciar();
void realizar_juego();
void terminar();
 
int iniciar(){
allegro_init();
install_keyboard();
set_color_depth(16);
if (set_gfx_mode(GFX_AUTODETECT,640,480,0,0)<0){
printf("error al iniciar el modo grafico\n");
allegro_exit();
exit(-1);
}
}
 
void terminar(){
allegro_exit();
}
int main(){
printf("error a");
iniciar();
printf("error b");
realizar_juego();
printf("error c");
terminar();
}
END_OF_MAIN();
void realizar_juego(){
 
BITMAP *nave;
PALETTE paleta;
int x,y, x_anterior, y_anterior;
BITMAP * buffer;
 
 
nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
set_palette(paleta);
if (nave==NULL) terminar();
buffer=create_bitmap(nave->w,nave->h);
clear (buffer);
if (buffer==NULL) terminar();
x=SCREEN_W/2;
y=SCREEN_H/2;
 
while (!key[KEY_ESC]){
 
if (key[KEY_UP,KEY_W])
y--;
if (key[KEY_DOWN,KEY_S])
y++;
if (key[KEY_LEFT,KEY_A])
x--;
if (key[KEY_RIGHT,KEY_D])
x++;
 
if (x<0) x=x_anterior;
if (x>SCREEN_W-nave->w) x=x_anterior;
if (y<0) y=y_anterior;
if (y>SCREEN_H-nave->h) y=y_anterior;
if ((x_anterior!=x) || (y_anterior!=y)){
blit (buffer,screen, 0, 0, x_anterior, y_anterior,buffer->w,buffer->h);
blit (screen,buffer,x,y,0,0,buffer->w,buffer->h);
draw_sprite(screen,nave, x, y);
}
x_anterior=x;
y_anterior=y;
 
 
}
}
 
me salen los errores a y b


« Última modificación: 18 Septiembre 2016, 14:40 pm por sanxez1 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #22 en: 18 Septiembre 2016, 16:09 pm »

Vale. Ahora, sigue con ese método hasta encontrar la línea exacta que da el error. Ve colocando un par de printf, hasta que veas que uno no se muestra.

Ahora sabes que el error está dentro de realizar_juego. pon printf ahí.

Por cierto, por seguridad, pon printf("a"); fflush(stdout);.
fflush hace que se muestre por pantalla al momento (ya que printf, stdout, utiliza un buffer). Es posible que falle y no se llegue a mostrar por pantalla. Con el fflush, haces que se muestre al momento, cosa importante por aquí xd
En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #23 en: 18 Septiembre 2016, 17:20 pm »

esta es la linea que me fastidia:
Código:
buffer=create_bitmap(nave->w,nave->h);

pero no se como soluconarlo
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #24 en: 18 Septiembre 2016, 20:15 pm »

No estoy seguro, pero si en vez de clear pones "clear_bitmap(...)", sigue igual?
En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #25 en: 18 Septiembre 2016, 20:34 pm »

si dices así
Código:
clear_bitmap(buffer);
si, sigue igual
« Última modificación: 18 Septiembre 2016, 20:38 pm por sanxez1 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #26 en: 18 Septiembre 2016, 21:13 pm »

Que extraño. Muestra en consola los valores de nave->w y nave->h antes del create_bitmap, a ver si son valores correctos.

EDITO: Wop, cuidado aqui:

Código
  1. nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
  2. set_palette(paleta);
  3. if (nave==NULL) terminar();
  4. buffer=create_bitmap(nave->w,nave->h);
  5. clear (buffer);
  6. if (buffer==NULL) terminar();

if(nave == NULL) terminar();
El código va a proseguir, y va a empezar a tirar errores (tal vez). Después del terminar, haz un return:
Código
  1. nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
  2. set_palette(paleta);
  3. if (nave==NULL){
  4.    terminar();
  5.    return;
  6. }
  7. buffer=create_bitmap(nave->w,nave->h);
  8. clear (buffer);
  9. if (buffer==NULL){
  10.    terminar();
  11.    return;
  12. }

O mejor aun: terminar() lo llamas al final del main, asi que no lo llames ahí, o será llamado 2 veces. Simplemente, pon el return.

Código
  1. nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
  2. set_palette(paleta);
  3. if (nave==NULL){
  4.    return;
  5. }
  6. buffer=create_bitmap(nave->w,nave->h);
  7. clear (buffer);
  8. if (buffer==NULL){
  9.    return;
  10. }
« Última modificación: 18 Septiembre 2016, 21:16 pm por ivancea96 » En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #27 en: 18 Septiembre 2016, 22:26 pm »

va por ahí, he puesto que me dijese error c al ir a terminar y me ha salido que hago???
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #28 en: 19 Septiembre 2016, 19:42 pm »

Pues nuevamente, encontrar dónde falla.

Intuyo que falla en:
Código
  1. nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
Verifícalo.

Si es eso, fíjate que el pcx exista y que la ruta sea correcta.

http://liballeg.org/stabledocs/en/alleg010.html#load_bitmap
En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #29 en: 25 Septiembre 2016, 18:21 pm »

existe, pero no se que le pasa, llevo dias dandole vueltas y no lo consigo ayudadme, xfa
En línea

Páginas: 1 2 [3] 4 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines