Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. uses GraphABC;
  2. const WIDTH = 512; HEIGHT = 512;
  3. var
  4. matrix : array[0..WIDTH, 0..HEIGHT] of integer;
  5. i, j, r, g, b : integer;
  6. pause: boolean;
  7. FPS:= 10;
  8.  
  9. procedure fillMatrix(lu, ru, ld, rd, n: real; k, l: integer);
  10. var c, cu, cl, cr, cd: real;
  11. begin
  12. c:= Random(81) - 45 + ((lu + ru + ld + rd) / 4);
  13. cu:= Random(81) - 45 + ((lu + ru + c) / 3);
  14. cl:= Random(81) - 45 + ((lu + ld + c) / 3);
  15. cr:= Random(81) - 45 + ((ru + rd + c) / 3);
  16. cd:= Random(81) - 45 + ((ld + rd + c) / 3);
  17. matrix[k + round(n / 2), l + round(n / 2)]:= round(c);
  18. matrix[k, l + round(n / 2)]:= round(cu);
  19. matrix[k + round(n / 2), l]:= round(cl);
  20. matrix[k + round(n / 2), l + round(n)]:= round(cr);
  21. matrix[k + round(n), l + round(n / 2)]:= round(cd);
  22. if n > 2 then begin
  23. fillMatrix(lu, cu, cl, c, n/2, k, l);
  24. fillMatrix(cu, ru, c, rd, n/2, k, l + round(n / 2));
  25. fillMatrix(cl, c, ld, cd, n/2, k + round(n / 2), l);
  26. fillMatrix(c, cr, cd, rd, n/2, k + round(n / 2), l + round(n / 2));
  27. end;
  28. end;
  29.  
  30. procedure KeyDown(key: integer);
  31. begin
  32. case key of
  33. VK_UP: begin
  34. FPS:= FPS + 1;
  35. pause:= false;
  36. end;
  37. VK_DOWN: begin
  38. if FPS > 1 then
  39. FPS:= FPS - 1
  40. else pause:= true;
  41. end;
  42. end;
  43. end;
  44.  
  45. begin
  46. var start, finish : real;
  47.  
  48. matrix[0, 0]:= Random(1100)-100;
  49. matrix[0, WIDTH]:= Random(1100)-100;
  50. matrix[HEIGHT, 0]:= Random(1100)-100;
  51. matrix[HEIGHT, WIDTH]:= Random(1100)-100;
  52.  
  53. SetWindowSize(WIDTH, HEIGHT);
  54. ClearWindow(RGB(256, 256, 256));
  55. LockDrawing;
  56.  
  57. start:= -1;
  58.  
  59. while (true) do begin
  60.  
  61. OnKeyDown:= KeyDown;
  62.  
  63. finish:= Milliseconds;
  64.  
  65. if ((start = -1) OR (1000 / FPS < (finish - start))) AND (NOT(pause)) then begin
  66. if NOT(start = -1) then Redraw;
  67.  
  68. start:= Milliseconds;
  69.  
  70. fillMatrix(matrix[0, 0], matrix[0, WIDTH], matrix[HEIGHT, 0], matrix[HEIGHT, WIDTH], WIDTH, 0, 0);
  71.  
  72. for i:= 0 to WIDTH do begin
  73. for j:= 0 to HEIGHT do begin
  74. r:= 0;
  75. g:= 0;
  76. b:= 0;
  77. case matrix[i, j] of
  78. -200..220:
  79. begin
  80. r:= 100;
  81. g:= 118;
  82. b:= 254;
  83. end;
  84. 221..440:
  85. begin
  86. r:= 250;
  87. g:= 232;
  88. b:= 169;
  89. end;
  90. 441..650:
  91. begin
  92. r:= 105;
  93. g:= 244;
  94. b:= 81;
  95. end;
  96. 651..810:
  97. begin
  98. r:= 145;
  99. g:= 181;
  100. b:= 165;
  101. end;
  102. 811..1100:
  103. begin
  104. r:= 247;
  105. g:= 249;
  106. b:= 240;
  107. end;
  108. end;
  109. SetPixel(i, j, RGB(r, g, b));
  110. end;
  111. end;
  112. end;
  113. end;
  114. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement