Public feed #527138

Something

public cpp v1 · immutable
Raw Edit
·published 2007-06-01 05:36 UTC
rendered paste body
#include <allegro.h>#include <iostream>BITMAP *buffer = NULL; //bufferconst int MOUSE = 0;const int KEYBOARD = 1;//timervolatile long timerCounter = 0;void increment_timerCounter(){  timerCounter++;}class sprite {    protected:        int sprX,sprY,sprWidth,sprHeight;    public:        int bbspritetop,bbspritebottom,bbspriteleft,bbspriteright;        sprite() {sprX=sprY=sprWidth=sprHeight=0;}        sprite(int _sprX, int _sprY, int _sprWidth, int _sprHeight) {            sprX = _sprX; sprY = _sprY;            sprWidth = _sprWidth;            sprHeight = _sprHeight;            bbspritetop = sprY-(sprHeight/2);            bbspritebottom = sprY+(sprHeight/2);            bbspriteleft = sprX-(sprWidth/2);            bbspriteright = sprX+(sprWidth/2);        }        virtual ~sprite() {}        virtual void draw(BITMAP *dest) {            draw_sprite(buffer, dest, bbspriteleft, bbspritetop);            bbspritetop = sprY-(sprHeight/2);            bbspritebottom = sprY+(sprHeight/2);            bbspriteleft = sprX-(sprWidth/2);            bbspriteright = sprX+(sprWidth/2);        }};class ball : public sprite {    private:    public:        int ballHspeed,ballVspeed;        ball() : sprite() {}        ball(int _sprX, int _sprY, int _sprWidth, int _sprHeight) : sprite(_sprX, _sprY, _sprWidth, _sprHeight) {}        void startBall(int _spd) {ballHspeed=ballVspeed=_spd;}        void ballSpeed(int _ballHspeed, int _ballVspeed) {ballHspeed = _ballHspeed; ballVspeed = _ballVspeed;}        virtual void control();};void ball::control() {    if (0 > sprX||640 < sprX) {        ballHspeed *= -1;    }    if (0 > sprY||480 < sprY) {        ballVspeed *= -1;    }        sprX += ballHspeed;        sprY += ballVspeed;}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 check_collision();};void paddle::control() {    if (paddleCtrl == KEYBOARD)    {        if (480>=sprY>=0)        {            if (key[KEY_UP]) sprY -= 10;            if (key[KEY_DOWN]) sprY +=10;        }        if (480<sprY) sprY = 480;        if (0>sprY) sprY = 0;    }    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");    }    BITMAP *playerBall = NULL; //playersprite    playerBall = load_bitmap("ball.bmp", NULL); // Load picture    if(playerBall == NULL)    {        set_gfx_mode(GFX_TEXT,0,0,0,0);        allegro_message("Could not load ball.bmp");    }    paddle *myPlayer[2];    myPlayer[0] = new paddle(20,240,15,102,KEYBOARD);    myPlayer[1] = new paddle(620,240,15,102,MOUSE);    ball myBall(320,240,15,15);    myBall.startBall(1);    //the game loop    while (!key[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);        }        myBall.control();        myBall.draw(playerBall);        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(playerBall); // Release the bitmap data    destroy_bitmap(playerSprite); // Release the bitmap data    destroy_bitmap(buffer); // Release the bitmap data    return 0;}END_OF_MAIN(); //yah, finishin' it up