Code:
#include <allegro.h>
#define RESX 640
#define RESY 480
#define BSIZ 80
int x = 200, y = 200;
class rectangle {
public:
int x, y, w, h, c, oy, ox;
void make(int x2, int y2, int w2, int h2, int c2);
void draw(int c3);
void drawold(int c4);
void move(int p, int step);
private:
};
void rectangle::make(int x2, int y2, int w2, int h2, int c2) {
x = x2;
y = y2;
w = w2;
h = h2;
c = c2;
}
void rectangle::move(int p, int step) {
ox = x;
oy = y;
if (p == 1) {
y = y - step;
}
if (p == 2) {
y = y + step;
}
if (p == 3) {
x = x - step;
}
if (p == 4) {
x = x + step;
}
}
void rectangle::draw(int c3) {
rectfill(screen, x, y, (x+w), (y+h), c3);
}
void rectangle::drawold(int c4) {
rectfill(screen, ox, oy, (x+w), (y+h), c4);
}
bool collide(int x1, int y1, int x2, int y2, int w, int h) {
if (x1 > x2 && x1 < (x2 + w) && y < (y2 + h) && y > y2) {
return true;
} else {
return false;
}
}
int main() {
allegro_init();
set_gfx_mode(GFX_AUTODETECT_WINDOWED, RESX, RESY, 0, 0);
set_color_depth(8);
set_window_title("Allegro game test 1");
BITMAP *bmp = create_bitmap_ex(8, BSIZ, BSIZ), *bbuf = create_video_bitmap(RESX, RESY);
BITMAP *bmp2 = create_bitmap_ex(8, 320, 240);
clear_bitmap(bmp2);
clear_bitmap(bmp);
clear_bitmap(bbuf);
install_keyboard();
install_mouse();
install_timer();
bmp = load_bmp("char.bmp", default_palette);
bmp2 = load_bmp("bdrop.bmp", default_palette);
blit(bmp2, screen, 0, 0, 0, 0, 640, 480);
draw_sprite(screen, bmp, x, y);
while (!key[KEY_ESC]) {
if (key[KEY_UP]) {
if (collide(x, y, 270, 1, 55, 45)) {
x = 300;
y = 400;
bmp2 = load_bmp("eroom.bmp", default_palette);
}
y -= 5;
rest(25);
blit(bmp2, screen, 0, 0, 0, 0, 640, 480);
vsync();
draw_sprite(screen, bmp, x, y);
}
if (key[KEY_DOWN]) {
if (collide(x, y, 270, 1, 55, 45)) {
x = 300;
y = 400;
bmp2 = load_bmp("eroom.bmp", default_palette);;
}
y += 5;
rest(25);
blit(bmp2, screen, 0, 0, 0, 0, 640, 480);
vsync();
draw_sprite(screen, bmp, x, y);
}
if (key[KEY_LEFT]) {
if (collide(x, y, 270, 1, 55, 45)) {
x = 300;
y = 400;
bmp2 = load_bmp("eroom.bmp", default_palette);
}
x -= 5;
rest(25);
blit(bmp2, screen, 0, 0, 0, 0, 640, 480);
vsync();
draw_sprite(screen, bmp, x, y);
}
if (key[KEY_RIGHT]) {
if (collide(x, y, 270, 1, 55, 45)) {
x = 300;
y = 400;
bmp2 = load_bmp("eroom.bmp", default_palette);
}
x += 5;
rest(25);
blit(bmp2, screen, 0, 0, 0, 0, 640, 480);
vsync();
draw_sprite(screen, bmp, x, y);
}
}
allegro_exit();
return 0;
}
END_OF_MAIN();
Ignore the rectangle class. It's for something I abandoned, but I don't quite want to get rid of it yet.