Autor
|
Tema: el programa dejó de funconar correctamente por un problema. (Leído 10,446 veces)
|
sanxez1
Desconectado
Mensajes: 36
|
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: #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
Mensajes: 3.412
ASMático
|
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. cout << 'a' << flush; linea_A; cout << 'b' << flush; linea_B; cout << 'c' << flush; linea_C;
Consola: En ese caso, sabríamos que probablemente el error esté en la línea B.
|
|
|
En línea
|
|
|
|
sanxez1
Desconectado
Mensajes: 36
|
el programa ni siquiera ejecuta
|
|
|
En línea
|
|
|
|
Poyoncio
|
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 pm por Poyoncio »
|
En línea
|
Curso de ensamblador desde cero
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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
|
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: } x_anterior=x; y_anterior=y; } }
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 pm por Poyoncio »
|
En línea
|
Curso de ensamblador desde cero
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Lo he vuelto a mirar y hay 3 fijate: } x_anterior=x; y_anterior=y; } }
El primero cierra el if, el segundo cierra el while y el tercero cierra la función.
|
|
|
En línea
|
|
|
|
Poyoncio
|
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
Mensajes: 36
|
he hecho lo de borrar el ejecutable y nada
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
¿Probaste lo de los cout? De ser así, pon aquí el código que probaste.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Aqui les dejo un buen programa!!!!!!!!!!
Diseño Gráfico
|
Zeden
|
0
|
1,917
|
4 Junio 2004, 18:42 pm
por Zeden
|
|
|
¿Por qué no funciona correctamente este programa? Ficheros inside
Programación C/C++
|
NathanD
|
5
|
2,955
|
25 Febrero 2013, 22:58 pm
por NathanD
|
|
|
¿Programa en c++ compila correctamente, pero se cuelga al correr?
Programación C/C++
|
erikat
|
3
|
3,833
|
4 Diciembre 2013, 12:22 pm
por Eternal Idol
|
|
|
El programa dejó de funcionar al dar una respuesta? (RESUELTO)
Programación C/C++
|
mcamara46
|
5
|
2,494
|
27 Diciembre 2013, 23:50 pm
por leosansan
|
|
|
El controlador de pantalla dejo de funcionar y se recupero correctamente
Hardware
|
riurannew
|
3
|
2,592
|
5 Mayo 2015, 09:29 am
por riurannew
|
|