el programa dejó de funconar correctamente por un problema.

Iniciado por sanxez1, 11 Septiembre 2016, 20:48 PM

0 Miembros y 1 Visitante están viendo este tema.

sanxez1


Poyoncio

#11

Tu problema es que no sabes en que codigo estas. Iostream es una libreria de C++ y stdlib y stdio de C, por tu code parece que estas en C porque pones printf .... asi que crea un archivo y ponle el code en C que te he puesto y lo guardas como fichero.c y lo compilas.

Prueba este codigo si estas en C :

#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;


}
}



Y este otro si estas en C++
Código (cpp) [Seleccionar]

#include <cstdio.h>
#include <cstdlib.h>
#include <allegro.h>
#include <iostream>
using namespace std;
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){
cout << "Error al iniciar el modo grafico" << endl;
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;


}
}


Curso de ensamblador desde cero

ivancea96

Cita de: sanxez1 en 11 Septiembre 2016, 21:42 PM
no hice lo de los couts, pero no se a que se refieren

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 (cpp) [Seleccionar]
int main(){
    cout << 'a' << endl;
    iniciar();
    cout << 'b' << endl;
    realizar_juego();
    cout << 'c' << endl;
    terminar();
    cout << 'd' << endl;
}


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.


sanxez1

estoy en c++ y siempre he utilizado las librerías stdio y stdlib, uso printf porque me resulta más fácil

Poyoncio

Cita de: sanxez1 en 11 Septiembre 2016, 21:48 PM
estoy en c++ y siempre he utilizado las librerías stdio y stdlib, uso printf porque me resulta más fácil
Pues nose, si siempre has usado librerias stdio y stdlib nose como te han compilado, como te digo usa cstdio y cstdlib, y lo de printf, precisamente cout es mas facil. No hay que declarar el tipo de dato que vas a mostrar pero eso ya enfuncion de gustos.

Saludos y haznos caso, sino, no se compilara nada
Curso de ensamblador desde cero

ivancea96

Cita de: Poyoncio en 11 Septiembre 2016, 21:51 PM
Pues nose, si siempre has usado librerias stdio y stdlib nose como te han compilado, como te digo usa cstdio y cstdlib, y lo de printf, precisamente cout es mas facil. No hay que declarar el tipo de dato que vas a mostrar pero eso ya enfuncion de gustos.

Saludos y haznos caso, sino, no se compilara nada

Es recomendable utilizar las de C++, pero normalmente se pueden utilizar también las de C, stdlib.h y etc eh? No hay problema en compilar eso.

Poyoncio

Cita de: ivancea96 en 11 Septiembre 2016, 21:56 PM
Es recomendable utilizar las de C++, pero normalmente se pueden utilizar también las de C, stdlib.h y etc eh? No hay problema en compilar eso.
A pues nose, ami me daban errores cuando comence (hace 2 meses o menos) por eso ahora aunque casi nunca las use les tengo un poco de tirria, estuve como 2 dias con el mismo error  :laugh: me volvi loco
Curso de ensamblador desde cero

sanxez1

consegu hacer lo de los couts pero no me sale nngún avso

ivancea96


sanxez1

#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;


}
}