Retângulos Aleatórios em Allegro #01 – C

//================================================================
// Nome do Arquivo: random_retangles.c
// Filename: random_retangles.c
//
// Descrição: O programa exibe retângulos em posições e cores
//            aleatórias
//================================================================

#include <stdlib.h>
#include <time.h>
#include <allegro.h>

int main(int argc, char *argv[])
{
    // largura e altura dos retângulos
    int largura, altura;
    // Pontos base dos retângulos
    int x1, y1, x2, y2;
    // Cor do contorno do retângulo
    int color;

	// Inicializa a biblioteca Allegro
	allegro_init();

	// Inicializa o módulo do relógio
	install_timer();

	// Inicializa o teclado
	install_keyboard();

	// Define a profundidade de cores para 32 bits
	set_color_depth(32);

	// Define a resolução de 640x480 no modo janela
	set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);

	// Muda o título da janela
	// O título sem acento é proposital
	set_window_title("Retangulos #1");

	// Inicia o gerador de números aleatórios
	srand(time(NULL));

	// Fica em loop até pressionar a tecla ESC
	while(!key[KEY_ESC])
	{
	    // Configura os atributos dos retângulos
	    largura = rand() % 640 + 1;
	    altura  = rand() % 480 + 1;
	    x1      = rand() % (640 - largura);
	    y1      = rand() % (480 - altura);
	    x2      = x1 + largura;
	    y2      = y1 + altura;
	    color   = makecol(rand() % 256, rand() % 256, rand() % 256);

	    // Desenha um retângulo em uma posição e cor aleatória
	    rect(screen, x1, y1, x2, y2, color);

	    // Espera 300 milisegundos para economizar processamento
	    rest(300);

		// Espera a sincronização vertical
		vsync();
	}

	// Sai do programa
	allegro_exit();
	return 0;
}
// Esta macro converte o main para WinMain()
END_OF_MAIN();