Thread: develop "alleyway" game issue

  1. #1
    Registered User
    Join Date
    Apr 2009
    Posts
    2

    develop "alleyway" game issue

    I had a big problem here. Actually the question is as below:

    "The ball starts in the middle of the screen with a random x and y direction speed (between ±2). The player uses keys ‘q’ and ‘z’ to move a pad (3 characters long) on the left of the screen. The goal is to hit (block) the ball with the pad when the ball gets to the left edge of the screen, otherwise it will fall off the screen and the player will lose. The ball bounces off the top, bottom and right walls automatically."


    Actually what I need to do is to develop a game that look like Alleyway game in Nintendo.anyone have the sample code of it because I do not have any idea on it....:S

  2. #2
    Kernel hacker
    Join Date
    Jul 2007
    Location
    Farncombe, Surrey, England
    Posts
    15,677
    So what exactly have you done so far?

    --
    Mats
    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  3. #3
    Registered User
    Join Date
    Apr 2009
    Posts
    2
    Actually I have some code here,but it occured error which is "allegro.h":no such file or directory.This error occur even I had create the header file.


    Code:
    // main.cpp : Defines the entry point for the console application.
    //
    #include "stdafx.h"
    #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();

  4. #4
    Registered User
    Join Date
    Apr 2009
    Posts
    16
    Have you been able to use allegro for anything else?
    What I'm asking is Are you sure you installed it right?
    If you have are you sure you set the compiler to find allegro where it suppose to be?

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Open-source Game Project
    By Glorfindel in forum Projects and Job Recruitment
    Replies: 0
    Last Post: 03-24-2009, 01:12 AM
  2. 20q game problems
    By Nexus-ZERO in forum C Programming
    Replies: 24
    Last Post: 12-17-2008, 05:48 PM
  3. So you want to be a game programmer?
    By dxfoo in forum Game Programming
    Replies: 23
    Last Post: 09-26-2006, 08:38 AM
  4. Win 32 Game Bitmap issue
    By loopshot in forum Game Programming
    Replies: 5
    Last Post: 03-02-2005, 12:55 PM
  5. HELP!wanting to make full screen game windowed
    By rented in forum Game Programming
    Replies: 3
    Last Post: 06-11-2004, 04:19 AM