All pastes #526760 Raw Edit

Something

public text v1 · immutable
#526760 ·published 2007-05-31 23:12 UTC
rendered paste body
#include <allegro.h>
#include <iostream>

BITMAP *buffer = NULL; //buffer
const int MOUSE = 0;
const int KEYBOARD = 1;


//timer
volatile long timerCounter = 0;
void increment_timerCounter()
{
  timerCounter++;
}

class sprite {
    protected:
        int sprX,sprY,sprWidth,sprHeight;
    public:
        sprite() {sprX=sprY=sprWidth=sprHeight=0;}
        sprite(int _sprX, int _sprY, int _sprWidth, int _sprHeight) {sprX = _sprX; sprY = _sprY; sprWidth = _sprWidth; sprHeight = _sprHeight;}
        virtual ~sprite() {}
        virtual void draw(BITMAP *dest) {draw_sprite(buffer, dest, sprX-(sprWidth/2), sprY-(sprHeight/2));}
};

class paddle : public sprite {
    private:
        int paddleCtrl,mousePosY;
    public:
        paddle() : sprite() {}
        paddle(int _sprX, int _sprY, int _sprWidth, int _sprHeight, int _paddleCtrl) : sprite(_sprX, _sprY, _sprWidth, _sprHeight) {paddleCtrl = _paddleCtrl;}
        void control();

};

void paddle::control() {
    if (paddleCtrl == KEYBOARD)
    {
        if (key[KEY_UP]) sprY -= 10;
        if (key[KEY_DOWN]) sprY +=10;
    }
    if (paddleCtrl == MOUSE)
    {
        sprY = mouse_pos & 0x0000ffff;
    }
}

int main(int argc, char *argv[])
{
    allegro_init();
    install_keyboard();
    install_timer();
    install_mouse();
    LOCK_VARIABLE(timerCounter);
    LOCK_FUNCTION(increment_timerCounter);
    install_int_ex(increment_timerCounter, BPS_TO_TIMER(60));
    set_color_depth(16);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);

    buffer = create_bitmap(640,480);

    if(buffer == NULL)
    {
        set_gfx_mode(GFX_TEXT,0,0,0,0);
        allegro_message("Could not create buffer!");
    }
    BITMAP *playerSprite = NULL; //playersprite
    playerSprite = load_bitmap("paddle.bmp", NULL); // Load picture

    if(playerSprite == NULL)
    {
        set_gfx_mode(GFX_TEXT,0,0,0,0);
        allegro_message("Could not load paddle.bmp");
    }

    paddle *myPlayer[2];
    myPlayer[0] = new paddle(20,240,15,102,KEYBOARD);
    myPlayer[1] = new paddle(620,240,15,102,MOUSE);
    //the game loop
    while (!k ey[KEY_ESC]) {
         while(timerCounter > 0) {

            for(int i=0;i<2;i++) {
                myPlayer[i]->control();
            }
            timerCounter--;
        }
        for(int i=0;i<2;i++) {
            myPlayer[i]->draw(playerSprite);
        }
        blit(buffer, screen, 0,0,0,0,640,480);//Draw the buffer to the screen
        clear_bitmap(buffer); // Clear the contents of the buffer bitmap
    }
    destroy_bitmap(playerSprite); // Release the bitmap data
    destroy_bitmap(buffer); // Release the bitmap data


    return 0;
}

END_OF_MAIN(); //yah, finishin' it up