First commit
commit
1a21dbdcc7
@ -0,0 +1,2 @@
|
||||
build:
|
||||
gcc pong.c -o pong -lallegro_color -lallegro_ttf -lallegro_font -lallegro_image -lallegro_primitives -lallegro
|
@ -0,0 +1,111 @@
|
||||
#include <stdio.h>
|
||||
#include <allegro5/allegro.h>
|
||||
#include <allegro5/allegro_font.h>
|
||||
#include <allegro5/allegro_ttf.h>
|
||||
#include <allegro5/allegro_image.h>
|
||||
#include <allegro5/allegro_primitives.h>
|
||||
|
||||
#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;
|
||||
}
|
Loading…
Reference in New Issue