CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2

Threaded View

  1. #1
    Join Date
    Apr 2009
    Posts
    3

    Exclamation Segmentation Fault

    Code:
    #include <allegro.h>
    
    BITMAP *RedBlock;
    BITMAP *BlueBlock;
    BITMAP *WhiteBlock;
    BITMAP *GreenBlock;
    BITMAP *BlackBlock;
    BITMAP *Background;
    BITMAP *Background2;
    BITMAP *buffer;
    //BlockColor 0 = no block 1 = redblock 2 = blueblock 3 = whiteblock 4 = greenblock
    int BlockColor[15][17] = {{0},{0}};
    int color;
    int BlockPosX [15];
    int BlockPosY [17];
    int CounterPos = 0;
    void NewGame(){
    
    }
    int MoveSingleBlock( int Blockx, int Blocky, int color1 ){
        if ( color1 == 1 ){
            draw_sprite( Background2, BlackBlock, BlockPosX[Blockx], BlockPosY[Blocky] );
            draw_sprite( Background2, RedBlock, BlockPosX[Blockx], BlockPosY[Blocky - 1]);
        }
        if ( color1 == 2 ){
            draw_sprite( Background2, BlackBlock, BlockPosX[Blockx], BlockPosY[Blocky] );
            draw_sprite( Background2, BlueBlock, BlockPosX[Blockx], BlockPosY[Blocky - 1]);
        }
        if ( color1 == 3 ){
            draw_sprite( Background2, BlackBlock, BlockPosX[Blockx], BlockPosY[Blocky] );
            draw_sprite( Background2, WhiteBlock, BlockPosX[Blockx], BlockPosY[Blocky - 1]);
        }
        if ( color1 == 4 ){
            draw_sprite( Background2, BlackBlock, BlockPosX[Blockx], BlockPosY[Blocky] );
            draw_sprite( Background2, GreenBlock, BlockPosX[Blockx], BlockPosY[Blocky - 1]);
        }
    }
    void MoveBlocks(){
        int x = 17;
        int i = 0;
        while ( x != 0 ){
            while( i != 15 ){
                if (BlockColor[i][x - 1] == 0 ){
                    MoveSingleBlock(BlockPosX[i], BlockPosY[x], BlockColor[i][x]);
                }
                i = i + 1;
            }
            x = x - 1;
    }
    }
    void SetBlockPos(){
       BlockPosX[0] = 122;
       BlockPosX[1] = 148;
       BlockPosX[2] = 174;
       BlockPosX[3] = 200;
       BlockPosX[4] = 226;
       BlockPosX[5] = 252;
       BlockPosX[6] = 278;
       BlockPosX[7] = 304;
       BlockPosX[8] = 330;
       BlockPosX[9] = 356;
       BlockPosX[10] = 382;
       BlockPosX[11] = 408;
       BlockPosX[12] = 434;
       BlockPosX[13] = 460;
       BlockPosX[14] = 486;
    
       BlockPosY[0] = 455;
       BlockPosY[1] = 429;
       BlockPosY[2] = 403;
       BlockPosY[3] = 377;
       BlockPosY[4] = 351;
       BlockPosY[5] = 325;
       BlockPosY[6] = 299;
       BlockPosY[7] = 273;
       BlockPosY[8] = 247;
       BlockPosY[9] = 221;
       BlockPosY[10] = 195;
       BlockPosY[11] = 169;
       BlockPosY[12] = 143;
       BlockPosY[13] = 117;
       BlockPosY[14] = 91;
       BlockPosY[15] = 65;
       BlockPosY[16] = 39;
    
    
    }
    void newline(){
    
        int i = 0;
        while (i != 15){
            color = rand()&#37;4;
        if (color == 0){
    
            draw_sprite(Background2, RedBlock, BlockPosX[i], BlockPosY[16]);
            BlockColor[i][17] = 1;
            i = i + 1;
    
        }
        if (color == 1){
    
            draw_sprite(Background2, BlueBlock, BlockPosX[i], BlockPosY[16]);
            BlockColor[i][17] = 2;   //i believe this is line 103
            i = i + 1;
    
        }
        if (color == 2){
    
            draw_sprite(Background2, WhiteBlock, BlockPosX[i], BlockPosY[16]);
            BlockColor[i][17] = 3;     
            i = i + 1;
    
        }
        if (color == 3){
    
            draw_sprite(Background2, GreenBlock, BlockPosX[i], BlockPosY[16]);
            BlockColor[i][17] = 4;
            i = i + 1;
    
        }
    }
    }
    
    
    
    int main(){
        //initialize allegro
        allegro_init();
        install_timer();
        install_keyboard();
        install_mouse();
        srand(time(NULL));
        set_color_depth(16);
        set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);
        //set the block positions
        SetBlockPos();
        //load needed bitmaps
        buffer = create_bitmap( SCREEN_W, SCREEN_H );
        Background2 = create_bitmap( SCREEN_W, SCREEN_H );
        Background = load_bitmap( "background.bmp", NULL);
        RedBlock = load_bitmap( "redblock.bmp", NULL);
        WhiteBlock = load_bitmap( "whiteblock.bmp", NULL);
        BlueBlock = load_bitmap( "blueblock.bmp", NULL);
        GreenBlock = load_bitmap( "greenblock.bmp", NULL);
        BlackBlock = load_bitmap( "blackblock.bmp", NULL);
        //newline and MoveBlocks timer
        install_int_ex(newline, SECS_TO_TIMER(5));
        install_int_ex(MoveBlocks, MSEC_TO_TIMER(50));
        //make a background i can draw on
        draw_sprite(Background2, Background, 0, 0);
        //main game loop
        while ( !key[KEY_ESC] ){
        //acquire screen for writing
        acquire_screen();
        //draw the background to buffer
    
        draw_sprite(buffer, Background2, 0, 0);
    
        //release screen
        release_screen();
        blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
        rest(80);
        }
    
        return 0;
    
    }
    END_OF_MAIN();
    I cannot figure out where this error is coming from. This is my first full game, so forgive me if it is sloppy at all but I would really appreciate it if you could help me with this problem ASAP. I am using Allegro which already declares all the include files needed for C++. The error always points at line 103, I have the line marked with a comment. Thank you in advanced.

    also my operating system is vista
    Last edited by noey699; July 20th, 2009 at 10:55 PM. Reason: forgot to end [code]

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured