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


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  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 5,588 veces)
sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
el programa dejó de funconar correctamente por un problema.
« en: 11 Septiembre 2016, 20:48 »

Cuando trato de ejecutar el siguiente programa en c++ me sale el error:

el programa dejó de funcionar correctamente por un problema. Windows cerrará el programa y le notificará si existe una solución.

el compilador no me da ningún problema el código es el siguiente:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
#include <iostream>

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;


}
}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.409


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #1 en: 11 Septiembre 2016, 21:06 »

En primer lugar, localiza la línea que da el error. Para ello, coloca pausas o salidas por consola (con "cout", por ejemplo) en distintas zonas hasta ver dónde falla.
Código
  1. cout << 'a' << flush;
  2. linea_A;
  3. cout << 'b' << flush;
  4. linea_B;
  5. cout << 'c' << flush;
  6. linea_C;

Consola:
Código:
ab

En ese caso, sabríamos que probablemente el error esté en la línea B.


En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #2 en: 11 Septiembre 2016, 21:09 »

el programa ni siquiera ejecuta
En línea

Poyoncio

Desconectado Desconectado

Mensajes: 220



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

Para empezar, cuando cierras los { } de la funcion iniciar, al final hay un } de mas   (justo encima de terminar() te falta poner en END_OF_MAIN( ) el caracter ";"
Luego cuando indicas el valor de nave si estas en windows tendrias que tener \\ y no /  (si se trata de trabajar con directorios en windows)
Y en la ultima linea te sobra un }  

Para la proxima, pon las etiquetas Geshi(C++) y te podre indicar la linea exacta
PD: Ademas las librerias que tienes stdio y stdlib tendrian que ser cstdio y cstdlib (de esto no estoy muy seguro, pero creo que es asi)

Saludos
« Última modificación: 11 Septiembre 2016, 21:16 por Poyoncio » En línea

Curso de ensamblador desde cero
ivancea96


Desconectado Desconectado

Mensajes: 3.409


ASMático


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

Luego cuando indicas el valor de nave si estas en windows tendrias que tener \\ y no /  (si se trata de trabajar con directorios en windows)
Y en la ultima linea te sobra un }  
Ambos sirven, tanto \ como /.
No sobra. Hay 2, uno para el while y otro para la función.

Y sí, cstdlib y cstdio.


Si dices que el programa te ha compilado bien: Por si acaso, borra el ejecutable y compila de nuevo.
Hecho eso, prueba de nuevo lo de los cout, poniéndo uno al principio, para asegurarte de que al menos comienza el programa.
En línea

Poyoncio

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #5 en: 11 Septiembre 2016, 21:20 »

Ambos sirven, tanto \ como /.
No sobra. Hay 2, uno para el while y otro para la función.

Y sí, cstdlib y cstdio.


Si dices que el programa te ha compilado bien: Por si acaso, borra el ejecutable y compila de nuevo.
Hecho eso, prueba de nuevo lo de los cout, poniéndo uno al principio, para asegurarte de que al menos comienza el programa.

Lo he vuelto a mirar y hay 3 fijate:
Código
  1.  }
  2.  x_anterior=x;
  3.  y_anterior=y;
  4.  
  5.  
  6. }
  7. }





Me estoy mirando el code de nuevo, tienes un lio tremendo con C y C++ usas stdlib y stdio, ademas de iostream, y luego pones printf.
Podrias especificar en que lenguaje estas programando? Porque alomejor lo que tienes que hacer es quitar el iostream y arreglar los errores de syntaxis y ya estas
« Última modificación: 11 Septiembre 2016, 21:26 por Poyoncio » En línea

Curso de ensamblador desde cero
ivancea96


Desconectado Desconectado

Mensajes: 3.409


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #6 en: 11 Septiembre 2016, 21:27 »

Lo he vuelto a mirar y hay 3 fijate:
Código
  1.  }
  2.  x_anterior=x;
  3.  y_anterior=y;
  4.  
  5.  
  6. }
  7. }

El primero cierra el if, el segundo cierra el while y el tercero cierra la función.
En línea

Poyoncio

Desconectado Desconectado

Mensajes: 220



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

El primero cierra el if, el segundo cierra el while y el tercero cierra la función.
Es verdad, no havia visto el if disculpa ;)
En línea

Curso de ensamblador desde cero
sanxez1

Desconectado Desconectado

Mensajes: 36


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

he hecho lo de borrar el ejecutable y nada
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.409


ASMático


Ver Perfil WWW
Re: el programa dejó de funconar correctamente por un problema.
« Respuesta #9 en: 11 Septiembre 2016, 21:36 »

¿Probaste lo de los cout? De ser así, pon aquí el código que probaste.
En línea

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

Ir a:  

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