All pastes #264558 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-02 15:08 UTC
rendered paste body
#include <allegro.h>
#include <stdlib.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()


        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 , 800 , 1200);

		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;

        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;
					}

                        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

				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, "geklickt !");
				}
				draw_sprite(buffer, cursor, mouse_x, mouse_y);

				blit(buffer, screen, 0, 0, 0, 0, 800, 600);//Blit the buffer
				clear(buffer);//Clear the buffer


        }

		//Destroy all bitmaps
		destroy_bitmap(buffer);
		destroy_bitmap(image1);
		destroy_bitmap(image2);
        return 0;

}