Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. uses GraphABC;
  2. const WIDTH = 256; HEIGHT = 256;
  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 begin
  41. pause:= true;
  42. FPS:= 0;
  43. end;
  44. end;
  45. end;
  46. end;
  47.  
  48. begin
  49. var start, finish : real;
  50.  
  51. matrix[0, 0]:= Random(1100)-100;
  52. matrix[0, WIDTH]:= Random(1100)-100;
  53. matrix[HEIGHT, 0]:= Random(1100)-100;
  54. matrix[HEIGHT, WIDTH]:= Random(1100)-100;
  55.  
  56. SetWindowSize(WIDTH, HEIGHT);
  57.  
  58.  
  59. start:= -1;
  60.  
  61. while (true) do begin
  62.  
  63. OnKeyDown:= KeyDown;
  64.  
  65. finish:= Milliseconds;
  66.  
  67. if ((start = -1) OR (1000 / FPS < (finish - start))) AND (NOT(pause)) then begin
  68. if NOT(start = -1) then Redraw;
  69.  
  70. LockDrawing();
  71. ClearWindow(ClWhite);
  72.  
  73. start:= Milliseconds;
  74.  
  75. fillMatrix(matrix[0, 0], matrix[0, WIDTH], matrix[HEIGHT, 0], matrix[HEIGHT, WIDTH], WIDTH, 0, 0);
  76.  
  77. for i:= 0 to WIDTH do begin
  78. for j:= 0 to HEIGHT do begin
  79. r:= 0;
  80. g:= 0;
  81. b:= 0;
  82. case matrix[i, j] of
  83. -200..220:
  84. begin
  85. r:= 100;
  86. g:= 118;
  87. b:= 254;
  88. end;
  89. 221..440:
  90. begin
  91. r:= 250;
  92. g:= 232;
  93. b:= 169;
  94. end;
  95. 441..650:
  96. begin
  97. r:= 105;
  98. g:= 244;
  99. b:= 81;
  100. end;
  101. 651..810:
  102. begin
  103. r:= 145;
  104. g:= 181;
  105. b:= 165;
  106. end;
  107. 811..1100:
  108. begin
  109. r:= 247;
  110. g:= 249;
  111. b:= 240;
  112. end;
  113. end;
  114. SetPixel(i, j, RGB(r, g, b));
  115. end;
  116. end;
  117. end;
  118. if pause then
  119. SetWindowTitle('PAUSE')
  120. else
  121. SetWindowTitle('MaxFPS: '+ FPS);
  122. end;
  123. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement