commit 1a21dbdcc721fd2ab19a1f8276d2bca528cf3d5b Author: Aadhavan Srinivasan Date: Thu Dec 14 11:14:13 2023 -0500 First commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6f543ef --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +build: + gcc pong.c -o pong -lallegro_color -lallegro_ttf -lallegro_font -lallegro_image -lallegro_primitives -lallegro diff --git a/pong.c b/pong.c new file mode 100644 index 0000000..787cd70 --- /dev/null +++ b/pong.c @@ -0,0 +1,111 @@ +#include +#include +#include +#include +#include +#include + +#define WIN_WIDTH 1000 +#define WIN_HEIGHT 600 + +void alleg_init(); + +void alleg_init() { + al_init(); + al_install_keyboard(); + al_install_mouse(); + al_init_image_addon(); + al_init_font_addon(); + al_init_ttf_addon(); + + return; +} + + +int main(int argc, char** argv) { +// Initialization + + alleg_init(); + ALLEGRO_DISPLAY* disp = al_create_display(WIN_WIDTH, WIN_HEIGHT); + ALLEGRO_EVENT_QUEUE* queue = al_create_event_queue(); + al_register_event_source(queue,al_get_keyboard_event_source()); + ALLEGRO_COLOR black = al_map_rgba(0,0,0,255); + ALLEGRO_COLOR white = al_map_rgba(255,255,255,255); + ALLEGRO_EVENT event; + bool running = true; + bool key_down_1 = false; + bool key_down_2 = false; + + float width = 25; + float height = 150; + float start_x_1 = 10; + float start_y_1 = 10; + float start_x_2 = WIN_WIDTH - 10 - width; + float start_y_2 = 10; + float velocity_1 = 0; + float velocity_2 = 0; + + al_clear_to_color(black); + al_draw_filled_rectangle(start_x_1, start_y_1, start_x_1 + width, start_y_1 + height, white); + al_draw_filled_rectangle(start_x_2, start_y_2, start_x_2 + width, start_y_2 + height, white); + al_flip_display(); + + while (running) { + // Code borrowed from: https://stackoverflow.com/a/30078011 + + while (!al_is_event_queue_empty(queue)) { + al_wait_for_event(queue, &event); + + if (event.type == ALLEGRO_EVENT_KEY_DOWN) { + switch (event.keyboard.keycode) { + case ALLEGRO_KEY_W: + velocity_1 -= 5; + break; + case ALLEGRO_KEY_S: + velocity_1 += 5; + break; + case ALLEGRO_KEY_UP: + velocity_2 -= 5; + break; + case ALLEGRO_KEY_DOWN: + velocity_2 += 5; + break; + + case ALLEGRO_KEY_Q: + running = false; + break; + } + + } else if (event.type == ALLEGRO_EVENT_KEY_UP) { + switch (event.keyboard.keycode) { + case ALLEGRO_KEY_W: + velocity_1 += 5; + break; + case ALLEGRO_KEY_S: + velocity_1 -= 5; + break; + case ALLEGRO_KEY_UP: + velocity_2 += 5; + break; + case ALLEGRO_KEY_DOWN: + velocity_2 -= 5; + break; + + } + } + } + + al_clear_to_color(black); + ((velocity_1 < 0 && start_y_1 > 0) || (velocity_1 > 0 && start_y_1 + height < WIN_HEIGHT)) && (start_y_1 += velocity_1); + ((velocity_2 < 0 && start_y_2 > 0) || (velocity_2 > 0 && start_y_2 + height < WIN_HEIGHT)) && (start_y_2 += velocity_2); + al_draw_filled_rectangle(start_x_1, start_y_1, start_x_1 + width, start_y_1 + height + velocity_1, white); + al_draw_filled_rectangle(start_x_2, start_y_2, start_x_2 + width, start_y_2 + height + velocity_2, white); + al_flip_display(); + } + +// Clean up + al_destroy_display(disp); + al_destroy_event_queue(queue); + + return 0; +}