Bonjour ,
Je commence a programmer des jeux , mais malheureusement j'ai manifestement quelques problèmes :
quand je le lance deux ou trois fois , cela passe encore , mais
plusieurs fois (une dizaine) mon pc commence à buguer sévèrement
et m'oblige un redémarrage.Pourtant, je détruit bien toutes mes
ressources à la fin.
Pourriez vous me dire comment éviter ce genre de problèmes ?
Je post un des codes en question (il n'est pas fini, fait avec allegro , pas de datafile, timers et son)
#include <allegro.h>
#define Largeur_Ecran 640
#define Hauteur_Ecran 480
#define Tilesize 33
#define grid_w 10
#define grid_h 10
BITMAP *buffer,*grid;
BITMAP *tiles ;
BITMAP *background;
int init();
void deinit();
void draw_map();
void draw_player() ;
void draw_font();
int map[grid_h][grid_w]={
0,0,0,0,0,0,0,0,0,0,
0,3,6,4,6,6,6,6,4,0,
0,7,0,8,0,9,0,0,8,0,
0,7,0,8,5,5,5,5,2,0,
0,1,5,2,0,0,8,9,8,0,
0,7,0,8,0,9,8,0,8,0,
0,1,5,2,5,5,2,0,8,0,
0,7,0,0,9,0,8,0,8,0,
0,1,5,5,5,5,2,5,2,0,
0,0,0,0,0,0,0,0,0,0,
};
void draw_all();
int main(int argc, char *argv[])
{
if(init()<0) return 0;
bool done = false ;
while(!done)//If the user hits escape, quit the program
{
clear(buffer);
draw_all();
if(key[KEY_ESC]){done = true ; }
}
deinit();
return 0; // Exit with no errors
}
END_OF_MAIN()
int init()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, Largeur_Ecran,Hauteur_Ecran,0,0);
buffer = create_bitmap(Largeur_Ecran,Hauteur_Ecran);
tiles =load_bitmap("tankbrigade.bmp",NULL);
if(!tiles){return 0;}
background =load_bitmap("green016.bmp",NULL);
if(!background){return 0;}
return 0;
}
void deinit()
{
destroy_bitmap(buffer);
destroy_bitmap(tiles);
destroy_bitmap(grid);
}
void draw_map()
{
grid = create_bitmap(32*10,32*10);
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(map[j][i]==0) { blit(tiles,grid,(11*33)-2,2*33,i*32,j*32,32,32);}
if(map[j][i]==1) { blit(tiles,grid,1*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==2) { blit(tiles,grid,2*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==3) { blit(tiles,grid,3*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==4) { blit(tiles,grid,4*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==5) { blit(tiles,grid,5*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==6) { blit(tiles,grid,6*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==7) { blit(tiles,grid,7*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==8) { blit(tiles,grid,8*33,6*33,i*32,j*32,32,32);}
if(map[j][i]==9)
{
blit(tiles,grid,6*33,4*33,i*32,j*32,32,32);}
}
}
blit(grid,buffer,0,0,35,35,640,480);
}
void draw_player()
{
blit(tiles,buffer,Tilesize*15,Tilesize*1,32,32,32,32);
}
void draw_all()
{
draw_font();
draw_map();
draw_player();
blit(buffer,screen,0,0,0,0,Largeur_Ecran,Hauteur_Ecran);
}
void draw_font()
{
int i,j;
for(i=0;i<5;i++)
blit(background,buffer,0,0,i*96,0,Largeur_Ecran,Hauteur_Ecran);
}