Thread: Can someone help me to modify the code to change the ball speed and add new balls

  1. #1
    Registered User
    Join Date
    Jan 2017
    Posts
    1

    Can someone help me to modify the code to change the ball speed and add new balls

    Code:
    #include <allegro.h>
    #include <cstdlib>
    #include <time.h>
    
    
    int ball_x = 320;
    int ball_y = 240;
    
    int ball_tempX = 320;
    int ball_tempY = 240;
    
    int p1_x = 20;
    int p1_y = 210;
    
    int p1_tempX = 20;
    int p1_tempY = 210;
    
    int p2_x = 620;
    int p2_y = 210;
    
    int p2_tempX = 620;
    int p2_tempY = 210;
    
    time_t secs;    //The seconds on the system clock will be stored here
                    //this will be used as the seed for srand()
    
    int dir;     //This will keep track of the circles direction
                //1= up and left, 2 = down and left, 3 = up and right, 4 = down and right
    
    BITMAP *buffer; //This will be our temporary bitmap for double buffering
    
    void moveBall(){
    
        ball_tempX = ball_x;
        ball_tempY = ball_y;
    
        if (dir == 1 && ball_x > 5 && ball_y > 5){
         
             if( ball_x == p1_x + 15 && ball_y >= p1_y && ball_y <= p1_y + 60){
                      dir = rand()% 2 + 3;
             }else{    
                     --ball_x;
                     --ball_y;
             }    
                  
        } else if (dir == 2 && ball_x > 5 && ball_y < 475){
    
             if( ball_x == p1_x + 15 && ball_y >= p1_y && ball_y <= p1_y + 60){
                      dir = rand()% 2 + 3;
             }else{    
                     --ball_x;
                     ++ball_y;
             }
    
        } else if (dir == 3 && ball_x < 635 && ball_y > 5){
    
             if( ball_x + 5 == p2_x && ball_y >= p2_y && ball_y <= p2_y + 60){
                      dir = rand()% 2 + 1;
             }else{    
                     ++ball_x;
                     --ball_y;
             }
    
        } else if (dir == 4 && ball_x < 635 && ball_y < 475){
    
             if( ball_x + 5 == p2_x && ball_y >= p2_y && ball_y <= p2_y + 60){
                      dir = rand()% 2 + 1;
             }else{    
                     ++ball_x;
                     ++ball_y;
             }
    
        } else { 
    
            if (dir == 1 || dir == 3)    ++dir;
            else if (dir == 2 || dir == 4)    --dir;
    
        }    
        
        acquire_screen();
        circlefill ( buffer, ball_tempX, ball_tempY, 5, makecol( 0, 0, 0));
        circlefill ( buffer, ball_x, ball_y, 5, makecol( 128, 255, 0));
        draw_sprite( screen, buffer, 0, 0);
        release_screen();
        
        rest(5);
    
    }    
    
    void p1Move(){
     
        p1_tempY = p1_y;
     
        if( key[KEY_W] && p1_y > 0){
         
            --p1_y;
                  
        } else if( key[KEY_S] && p1_y < 420){
         
            ++p1_y;
                  
        }     
        
        acquire_screen();
        rectfill( buffer, p1_tempX, p1_tempY, p1_tempX + 10, p1_tempY + 60, makecol ( 0, 0, 0));
        rectfill( buffer, p1_x, p1_y, p1_x + 10, p1_y + 60, makecol ( 0, 0, 255));
        release_screen();
              
    }  
    
    void p2Move(){
     
        p2_tempY = p2_y;
     
        if( key[KEY_UP] && p2_y > 0){
         
            --p2_y;
                  
        } else if( key[KEY_DOWN] && p2_y < 420){
         
            ++p2_y;
                  
        }     
        
        acquire_screen();
        rectfill( buffer, p2_tempX, p2_tempY, p2_tempX + 10, p2_tempY + 60, makecol ( 0, 0, 0));
        rectfill( buffer, p2_x, p2_y, p2_x + 10, p2_y + 60, makecol ( 0, 0, 255));
        release_screen();
              
    }    
    
    void startNew(){
    
        clear_keybuf();
        readkey();
        clear_to_color( buffer, makecol( 0, 0, 0));
        ball_x = 320;
        ball_y = 240;
    
        p1_x = 20;
        p1_y = 210;
    
        p2_x = 620;
        p2_y = 210;
    
    }    
    
    void checkWin(){
    
        if ( ball_x < p1_x){
            textout_ex( screen, font, "Player 2 Wins!", 320, 240, makecol( 255, 0, 0), makecol( 0, 0, 0)); 
            startNew();
        } else if ( ball_x > p2_x){
            textout_ex( screen, font, "Player 1 Wins!", 320, 240, makecol( 255, 0, 0), makecol( 0, 0, 0)); 
            startNew();
        }    
       
    }    
    
    void setupGame(){
     
        acquire_screen();
        rectfill( buffer, p1_x, p1_y, p1_x + 10, p1_y + 60, makecol ( 0, 0, 255));
        rectfill( buffer, p2_x, p2_y, p2_x + 10, p2_y + 60, makecol ( 0, 0, 255));  
        circlefill ( buffer, ball_x, ball_y, 5, makecol( 128, 255, 0));
        draw_sprite( screen, buffer, 0, 0);
        release_screen();
        
        time(&secs);
        srand( (unsigned int)secs);
        dir = rand() % 4 + 1;
                
    }    
    
    int main(){
    
        allegro_init();
        install_keyboard();
        set_color_depth(16);
        set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);
        
        buffer = create_bitmap( 640, 480); 
        
        setupGame();
        
        while( !key[KEY_ESC]){
    
            p1Move();
            p2Move();
            moveBall();
            checkWin();
       
        }    
        
        return 0;
    
    }
    END_OF_MAIN();

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,666
    Look mummy, look what I found on the interwebs.

    > Can someone help me to modify the code to change the ball speed and add new balls
    Here:
    1. Load the file into your favourite text editor.
    2. Do a global search for 'ball' (case insensitive)
    3. For each matching result, add your own comment as to what you think it does.
    4. With some improved knowledge of the code, experiment with small changes to the code. Do the actual effects match your expectations?
    5. With more improved knowledge, attempt to answer your own question.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Modify this code using a functions
    By Sammyft in forum C Programming
    Replies: 0
    Last Post: 10-16-2016, 05:10 PM
  2. Should I modify the code
    By Satya in forum C Programming
    Replies: 4
    Last Post: 10-12-2015, 01:33 AM
  3. need help in modify my code
    By mritay in forum C Programming
    Replies: 1
    Last Post: 12-18-2012, 07:59 AM
  4. help modify code 6 x 24 to 10 x 24 led matrix
    By visualfx in forum C++ Programming
    Replies: 5
    Last Post: 09-05-2012, 02:04 PM
  5. modify my code
    By BEN10 in forum C Programming
    Replies: 3
    Last Post: 03-28-2009, 01:48 AM

Tags for this Thread