All pastes #265617 Raw Edit

Something

public c v1 · immutable
·published 2006-12-03 13:37 UTC
rendered paste body
// main#include <allegro.h>#include <stdlib.h>#include "units.h"volatile long speed_counter = 0;void increment_speed_counter() // A function to increment the speed counter{        speed_counter++;}int main(){        allegro_init();        install_keyboard();        install_timer();		install_mouse();		show_os_cursor(2);		unit test;		test.assign_bitmap();		        LOCK_VARIABLE(speed_counter); //Used to set the timer - which regulates the game's        LOCK_FUNCTION(increment_speed_counter);//speed.        install_int_ex(increment_speed_counter, BPS_TO_TIMER(60));		set_color_depth(16);        set_gfx_mode(GFX_AUTODETECT_WINDOWED , 800 , 600 , 0 , 0);		show_os_cursor(MOUSE_CURSOR_ARROW);		BITMAP *cursor = load_bitmap("cursor.bmp", 0);		BITMAP *buffer = create_bitmap(800, 600);		if(buffer == NULL)		{			set_gfx_mode(GFX_TEXT,0,0,0,0);			allegro_message("Could not create buffer!");			exit(EXIT_FAILURE);		}		BITMAP *image1 = load_bitmap("image1.bmp", NULL);//Load image 1		if(image1 == NULL)		{			set_gfx_mode(GFX_TEXT,0,0,0,0); //Set the screen mode for allegro messages			allegro_message("Could not load image1.bmp");			exit(EXIT_FAILURE);		}		BITMAP *image2 = load_bitmap("image2.bmp", NULL);//Load image 2		if(image2 == NULL)		{			set_gfx_mode(GFX_TEXT,0,0,0,0); //Set the screen mode for allegro messages			allegro_message("Could not load image2.bmp");			exit(EXIT_FAILURE);		}		int image1_x_position = 0; // Set the x position of image 1 to 0.		int image1_y_position = 0; // Set the y position of image 1 to 0.		int image2_x_position = 100; // Set the x position of image 2 to 100.		int image2_y_position = 100; // Set the y position of image 2 to 100.		int image1_bb_left = image1_x_position;		int image1_bb_top = image1_y_position;		int image1_bb_right = (image1_bb_left + image1->w);		int image1_bb_bottom = (image1_bb_top + image1->h);		int image2_bb_left = image2_x_position;		int image2_bb_top = image2_y_position;		int image2_bb_right = (image2_bb_left + image2->w);		int image2_bb_bottom = (image2_bb_top + image2->h);		int show_bbox = FALSE;		int collision = FALSE;		int clicked = FALSE;        int tank_X = 0;        int tank_Y = 0;		int frame_counter = 0;		int nf = 0, nt = 0;		int test;        while(!key[KEY_ESC])//If the user hits escape, quit the program        {                while(speed_counter > 0)                {					if(key[KEY_LEFT])						image1_x_position --; // Move image 1 left.					if(key[KEY_RIGHT])						image1_x_position ++; // Move image 1 right.					if(key[KEY_DOWN])						image1_y_position ++; // Move image 1 down.					if(key[KEY_UP])						image1_y_position --; // Move image 1 up.					if(key[KEY_A])						image2_x_position --; // Move image 2 left.					if(key[KEY_D])						image2_x_position ++; // Move image 2 right.					if(key[KEY_S])						image2_y_position ++; // Move image 2 down.					if(key[KEY_W])						image2_y_position --; // Move image 2 up.					if(key[KEY_SPACE])						show_bbox = TRUE;					else if(!key[KEY_SPACE])						show_bbox = FALSE;					// mouse test					if (mouse_b)					{						clicked = TRUE; /* any mouse button is pressed */					}					else if(!mouse_b)						clicked = FALSE;					image1_bb_left = image1_x_position;					image1_bb_top = image1_y_position;					image1_bb_right = (image1_bb_left + image1->w);					image1_bb_bottom = (image1_bb_top + image1->h);					image2_bb_left = image2_x_position;					image2_bb_top = image2_y_position;					image2_bb_right = (image2_bb_left + image2->w);					image2_bb_bottom = (image2_bb_top + image2->h);					// Assume that there is no collision					collision = FALSE;					if(						(image1_bb_left >= image2_bb_left) && (image1_bb_top >= image2_bb_top) &&						(image1_bb_left <= image2_bb_right) && (image1_bb_top <= image2_bb_bottom)					  )					{						collision = TRUE;					}					else if(							(image1_bb_right <= image2_bb_right) && (image1_bb_right >= image2_bb_left) &&							(image1_bb_top >= image2_bb_top) && (image1_bb_top <= image2_bb_bottom)						   )					{						collision = TRUE;					}					else if(							(image1_bb_left >= image2_bb_left) && (image1_bb_left <= image2_bb_right) &&							(image1_bb_bottom <= image2_bb_bottom) && (image1_bb_bottom >= image2_bb_top)						   )					{						collision = TRUE;					}					else if(							(image1_bb_right <= image2_bb_right) && (image1_bb_right >= image2_bb_left) &&							(image1_bb_bottom <= image2_bb_bottom) && (image1_bb_bottom >= image2_bb_top)						   )					{						collision = TRUE;					}					if(						(image2_bb_left >= image1_bb_left) && (image2_bb_top >= image1_bb_top) &&						(image2_bb_left <= image1_bb_right) && (image2_bb_top <= image1_bb_bottom)					  )					{						collision = TRUE;					}					else if(							(image2_bb_right <= image1_bb_right) && (image2_bb_right >= image1_bb_left) &&							(image2_bb_top >= image1_bb_top) && (image2_bb_top <= image1_bb_bottom)						   )					{						collision = TRUE;					}					else if(							(image2_bb_right <= image1_bb_right) && (image2_bb_right >= image1_bb_left) &&							(image2_bb_bottom <= image1_bb_bottom) && (image2_bb_bottom >= image1_bb_top)						   )					{						collision = TRUE;					}					else if(							(image2_bb_right <= image1_bb_right) && (image2_bb_right >= image1_bb_left) &&							(image2_bb_bottom <= image1_bb_bottom) && (image2_bb_bottom >= image1_bb_top)						   )					{						collision = TRUE;					}					if(						(image1_bb_top > image2_bb_top) && (image1_bb_bottom < image2_bb_bottom) &&						(image2_bb_left > image1_bb_left) && (image2_bb_right < image1_bb_right)					  )					{						collision = TRUE;					}					if(						(image2_bb_top > image1_bb_top) && (image2_bb_bottom < image1_bb_bottom) &&						(image1_bb_left > image2_bb_left) && (image1_bb_right < image2_bb_right)					  )					{						collision = TRUE;					}					nt++;                    speed_counter--;                } // speed counter loop				//draw_sprite(buffer, image1, image1_x_position, image1_y_position); // Draw image1				//draw_sprite(buffer, image2, image2_x_position, image2_y_position); // Draw image2				test.draw();								if(show_bbox == TRUE)				{					line(buffer, image1_bb_left, image1_bb_top, image1_bb_right, image1_bb_top, makecol(255,0,0));					line(buffer, image1_bb_left, image1_bb_bottom, image1_bb_right, image1_bb_bottom, makecol(255,0,0));					line(buffer, image1_bb_left, image1_bb_top, image1_bb_left, image1_bb_bottom, makecol(255,0,0));					line(buffer, image1_bb_right, image1_bb_top, image1_bb_right, image1_bb_bottom, makecol(255,0,0));					line(buffer, image2_bb_left, image2_bb_top, image2_bb_right, image2_bb_top, makecol(255,0,0));					line(buffer, image2_bb_left, image2_bb_bottom, image2_bb_right, image2_bb_bottom, makecol(255,0,0));					line(buffer, image2_bb_left, image2_bb_top, image2_bb_left, image2_bb_bottom, makecol(255,0,0));					line(buffer, image2_bb_right, image2_bb_top, image2_bb_right, image2_bb_bottom, makecol(255,0,0));				}				if(collision == TRUE)				{					textprintf_ex(buffer, font, 0,0, makecol(255,255,255), -1, "Collision!");				}				if(clicked == TRUE)				{					textprintf_ex(buffer, font, 0,0, makecol(255,255,255), -1, "kliked");				}				textprintf_ex(buffer, font, 0, 0, -1, 0, "%f", (float) nf * 60 / nt);				//				blit(buffer, screen, 0, 0, 0, 0, 800, 600);//Blit the buffer				nf++;				clear(buffer);//Clear the buffer        }		//Destroy all bitmaps		destroy_bitmap(buffer);		destroy_bitmap(image1);		destroy_bitmap(image2);        return 0;}// units.hclass unit{	private:			BITMAP *hold;		int X , Y;	public:		void assign_bitmap();		void draw();}// units.cpp#include "units.h"void unit::draw(){	draw_sprite(buffer, hold , X, X; // Draw image1}void unit::assign_bitmap(){	*hold = load_bitmap("tank.bmp");}