Hey, last time I programmed something was over a year ago; I dont recall having too much of a problem.
When I draw_sprite from a file, this case "small.bmp", and I execute the .exe it crashes.
If I comment out draw_sprite( buffer, Newgame, 200, 200); it works fine...
Whats the problem??
| 1 | #define ALLEGRO_STATICLINK |
| 2 | |
| 3 | #include <allegro.h> |
| 4 | #include "CMenu.h" |
| 5 | |
| 6 | |
| 7 | |
| 8 | BITMAP *buffer; |
| 9 | |
| 10 | |
| 11 | //Menu buttons |
| 12 | |
| 13 | BITMAP *Newgame; |
| 14 | |
| 15 | |
| 16 | //Menus position |
| 17 | //int NewgameX = 200; |
| 18 | //int NewgameY = 150; |
| 19 | |
| 20 | |
| 21 | |
| 22 | void CMenu::Menu() |
| 23 | { |
| 24 | Newgame = load_bitmap( "small.bmp", NULL); |
| 25 | //menu system |
| 26 | while ( !key[KEY_ESC] ){ |
| 27 | |
| 28 | |
| 29 | |
| 30 | acquire_screen(); |
| 31 | |
| 32 | //makes everything black |
| 33 | //clear_to_color( screen, makecol( 0, 0, 0)); |
| 34 | |
| 35 | |
| 36 | draw_sprite( buffer, Newgame, 200, 200); |
| 37 | |
| 38 | draw_sprite( screen, buffer, 0, 0); |
| 39 | release_screen(); |
| 40 | |
| 41 | |
| 42 | rest(50); |
| 43 | |
| 44 | } |
| 45 | |
| 46 | } |
| 47 | |
| 48 | |
| 49 | int main(){ |
| 50 | |
| 51 | allegro_init(); |
| 52 | install_keyboard(); |
| 53 | // install_mouse(); |
| 54 | set_color_depth(16); |
| 55 | set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); |
| 56 | |
| 57 | |
| 58 | buffer = create_bitmap( 800, 600); |
| 59 | |
| 60 | // show_mouse(screen); |
| 61 | |
| 62 | CMenu Menu; |
| 63 | Menu.Menu(); |
| 64 | |
| 65 | return 0; |
| 66 | } |
| 67 | |
| 68 | END_OF_MAIN(); |
The standard advice: add checks to loading the bitmap, like:
Newgame = load_bitmap(...); if (!Newgame) { allegro_message("Unable to load bitmap."); }
That way, you'll get some information on why your program is crashing if it is something wrong with the path.
As far as I can see, there are no other errors in your code (some bad practices, sure, but no errors per se), so there is a good chance your program just can't find/load the "small.bmp" file.
If I comment out draw_sprite( buffer, Newgame, 200, 200); it works fine...
That tells me the small.bmp didn't load correctly, do some error checking.
[Edit]
Beaten.
Whoa quick reply!
The strangest thing. There is acctually nothing wrong with the program...
When I exicute the .exe within Microsoft Visual C++ 6.0, it says it cant load the image. If I do it manually it works? How annoying?!
Then it sounds like a filepath issue..
Yes you were right, Changed my working directory. Thanks.