first
This commit is contained in:
commit
b1dd4a1feb
|
@ -0,0 +1,11 @@
|
||||||
|
CXX = g++
|
||||||
|
FLAGS = -Wall
|
||||||
|
LDFLAGS = -lallegro-static
|
||||||
|
LIBS = -L./
|
||||||
|
OTHER_FLAGS = -lwinmm -lopengl32 -lgdi32 -lole32 -lshlwapi
|
||||||
|
WINFLAG = -mwindows
|
||||||
|
BIN = main
|
||||||
|
SOURCE = main.c
|
||||||
|
|
||||||
|
all:
|
||||||
|
$(CXX) $(SOURCE) $(LIBS) $(LDFLAGS) $(FLAGS) $(OTHER_FLAGS) $(WINFLAG) -o $(BIN)
|
|
@ -0,0 +1,101 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <allegro5/allegro.h>
|
||||||
|
|
||||||
|
const float FPS = 60;
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
ALLEGRO_DISPLAY *display = NULL;
|
||||||
|
ALLEGRO_EVENT_QUEUE *event_queue = NULL;
|
||||||
|
ALLEGRO_TIMER *timer = NULL;
|
||||||
|
|
||||||
|
bool running = true;
|
||||||
|
bool redraw = true;
|
||||||
|
|
||||||
|
// Initialize allegro
|
||||||
|
if (!al_init())
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to initialize allegro.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize the timer
|
||||||
|
timer = al_create_timer(1.0 / FPS);
|
||||||
|
if (!timer)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to create timer.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the display
|
||||||
|
display = al_create_display(640, 480);
|
||||||
|
if (!display)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to create display.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the event queue
|
||||||
|
event_queue = al_create_event_queue();
|
||||||
|
if (!event_queue)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to create event queue.");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register event sources
|
||||||
|
al_register_event_source(event_queue, al_get_display_event_source(display));
|
||||||
|
al_register_event_source(event_queue, al_get_timer_event_source(timer));
|
||||||
|
|
||||||
|
// Display a black screen
|
||||||
|
al_clear_to_color(al_map_rgb(0, 0, 0));
|
||||||
|
al_flip_display();
|
||||||
|
|
||||||
|
// Start the timer
|
||||||
|
al_start_timer(timer);
|
||||||
|
|
||||||
|
// Game loop
|
||||||
|
while (running)
|
||||||
|
{
|
||||||
|
ALLEGRO_EVENT event;
|
||||||
|
ALLEGRO_TIMEOUT timeout;
|
||||||
|
|
||||||
|
// Initialize timeout
|
||||||
|
al_init_timeout(&timeout, 0.06);
|
||||||
|
|
||||||
|
// Fetch the event (if one exists)
|
||||||
|
bool get_event = al_wait_for_event_until(event_queue, &event, &timeout);
|
||||||
|
|
||||||
|
// Handle the event
|
||||||
|
if (get_event)
|
||||||
|
{
|
||||||
|
switch (event.type)
|
||||||
|
{
|
||||||
|
case ALLEGRO_EVENT_TIMER:
|
||||||
|
redraw = true;
|
||||||
|
break;
|
||||||
|
case ALLEGRO_EVENT_DISPLAY_CLOSE:
|
||||||
|
running = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Unsupported event received: %d\n", event.type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we need to redraw
|
||||||
|
if (redraw && al_is_event_queue_empty(event_queue))
|
||||||
|
{
|
||||||
|
// Redraw
|
||||||
|
al_clear_to_color(al_map_rgb(0, 0, 0));
|
||||||
|
al_flip_display();
|
||||||
|
redraw = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up
|
||||||
|
al_destroy_display(display);
|
||||||
|
al_destroy_event_queue(event_queue);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue