program RandomSquaresExpand;
const
SDL_WINDOW_SHOWN = 4;
SDL_RENDERER_ACCELLERATED = 2;
SDL_QUIT = 256;
SDL_KEYDOWN = 768;
SDLK_ESCAPE = 27;
WIDTH = 800;
HEIGHT = 800;
TILE_W = 32;
TILE_H = 32;
var
result, window_id, renderer, event_type_result: integer;
running: boolean;
color_value_r, color_value_g, color_value_b: integer;
i, z: integer;
max_cols, max_rows: integer;
index_w: integer;
index_h: integer;
procedure render(cols, rows: integer);
begin
for z := 0 to rows do
for i := 0 to cols do
begin
color_value_r := rand() mod 255;
color_value_g := rand() mod 255;
color_value_b := rand() mod 255;
sdl_set_draw_color(renderer, color_value_r, color_value_g, color_value_b, 255);
sdl_fill_rect(renderer, i * TILE_W, z * TILE_H, TILE_W, TILE_H);
end;
end;
procedure init;
begin
result := sdl_init();
if result <> 0 then halt(0);
window_id := sdl_create_window('Random Squares', 100, 100, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
if window_id = -1 then begin sdl_quit(); halt(0); end;
renderer := sdl_create_renderer(window_id, -1, SDL_RENDERER_ACCELLERATED);
if renderer = -1 then begin sdl_destroy_window(window_id); sdl_quit(); halt(0); end;
srand(sdl_get_ticks());
end;
procedure cleanup;
begin
sdl_destroy_renderer(renderer);
sdl_destroy_window(window_id);
sdl_quit();
end;
begin
index_w := 2;
index_h := 2;
max_cols :=(WIDTH div TILE_W)-1;
max_rows := (HEIGHT div TILE_H)-1;
init;
running := true;
while running do
begin
while sdl_poll_event() <> 0 do
begin
event_type_result := sdl_get_event_type();
if event_type_result = SDL_QUIT then running := false;
if (event_type_result = SDL_KEYDOWN) and (sdl_get_key_code() = SDLK_ESCAPE) then running := false;
end;
sdl_set_draw_color(renderer, 0, 0, 0, 255);
sdl_clear(renderer);
render(index_w, index_h);
if (index_w >= max_cols) or (index_h >= max_rows) then
begin
index_w := 2;
index_h := 2;
end
else
begin
index_w := index_w + 1;
index_h := index_h + 1;
end;
sdl_present(renderer);
sdl_delay(16);
end;
cleanup;
end.