Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses GraphABC;
- const WIDTH = 256; HEIGHT = 256;
- var
- matrix : array[0..WIDTH, 0..HEIGHT] of integer;
- i, j, r, g, b : integer;
- pause: boolean;
- FPS:= 10;
- procedure fillMatrix(lu, ru, ld, rd, n: real; k, l: integer);
- var c, cu, cl, cr, cd: real;
- begin
- c:= Random(81) - 45 + ((lu + ru + ld + rd) / 4);
- cu:= Random(81) - 45 + ((lu + ru + c) / 3);
- cl:= Random(81) - 45 + ((lu + ld + c) / 3);
- cr:= Random(81) - 45 + ((ru + rd + c) / 3);
- cd:= Random(81) - 45 + ((ld + rd + c) / 3);
- matrix[k + round(n / 2), l + round(n / 2)]:= round(c);
- matrix[k, l + round(n / 2)]:= round(cu);
- matrix[k + round(n / 2), l]:= round(cl);
- matrix[k + round(n / 2), l + round(n)]:= round(cr);
- matrix[k + round(n), l + round(n / 2)]:= round(cd);
- if n > 2 then begin
- fillMatrix(lu, cu, cl, c, n/2, k, l);
- fillMatrix(cu, ru, c, rd, n/2, k, l + round(n / 2));
- fillMatrix(cl, c, ld, cd, n/2, k + round(n / 2), l);
- fillMatrix(c, cr, cd, rd, n/2, k + round(n / 2), l + round(n / 2));
- end;
- end;
- procedure KeyDown(key: integer);
- begin
- case key of
- VK_UP: begin
- FPS:= FPS + 1;
- pause:= false;
- end;
- VK_DOWN: begin
- if FPS > 1 then
- FPS:= FPS - 1
- else begin
- pause:= true;
- FPS:= 0;
- end;
- end;
- end;
- end;
- begin
- var start, finish : real;
- matrix[0, 0]:= Random(1100)-100;
- matrix[0, WIDTH]:= Random(1100)-100;
- matrix[HEIGHT, 0]:= Random(1100)-100;
- matrix[HEIGHT, WIDTH]:= Random(1100)-100;
- SetWindowSize(WIDTH, HEIGHT);
- start:= -1;
- while (true) do begin
- OnKeyDown:= KeyDown;
- finish:= Milliseconds;
- if ((start = -1) OR (1000 / FPS < (finish - start))) AND (NOT(pause)) then begin
- if NOT(start = -1) then Redraw;
- LockDrawing();
- ClearWindow(ClWhite);
- start:= Milliseconds;
- fillMatrix(matrix[0, 0], matrix[0, WIDTH], matrix[HEIGHT, 0], matrix[HEIGHT, WIDTH], WIDTH, 0, 0);
- for i:= 0 to WIDTH do begin
- for j:= 0 to HEIGHT do begin
- r:= 0;
- g:= 0;
- b:= 0;
- case matrix[i, j] of
- -200..220:
- begin
- r:= 100;
- g:= 118;
- b:= 254;
- end;
- 221..440:
- begin
- r:= 250;
- g:= 232;
- b:= 169;
- end;
- 441..650:
- begin
- r:= 105;
- g:= 244;
- b:= 81;
- end;
- 651..810:
- begin
- r:= 145;
- g:= 181;
- b:= 165;
- end;
- 811..1100:
- begin
- r:= 247;
- g:= 249;
- b:= 240;
- end;
- end;
- SetPixel(i, j, RGB(r, g, b));
- end;
- end;
- end;
- if pause then
- SetWindowTitle('PAUSE')
- else
- SetWindowTitle('MaxFPS: '+ FPS);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement