Advertisement
Guest User

ballnew

a guest
Apr 23rd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.45 KB | None | 0 0
  1. uses graphabc;
  2.  
  3. type
  4.   figuretype = (R, C);
  5.  
  6. type
  7.   figurematerial = (B, S);
  8.  
  9. type
  10.   figure = record
  11.     x1: integer;
  12.     y1: integer;
  13.     x2: integer;
  14.     y2: integer;
  15.     w: integer;
  16.     r: integer;
  17.     sx: integer;
  18.     sy: integer;
  19.     oldx: integer;
  20.     oldy: integer;
  21.     t: figuretype;
  22.     m: figurematerial;
  23.     move: boolean;
  24.   end;
  25.  
  26. var
  27.   figures: array[1..100] of figure;
  28.  
  29. procedure mouseclick(mx, my, mb: integer);
  30. begin
  31.   for var i := 1 to 2 do
  32.   begin
  33.     case figures[i].t of
  34.       C:
  35.         begin
  36.           if (mx >= figures[i].x1 - figures[i].r ) and (mx <= figures[i].x1 + figures[i].r) and (my >= figures[i].y1 - figures[i].r) and (my <= figures[i].y1 + figures[i].r) then figures[i].move := true;
  37.         end;
  38.       R:
  39.         begin
  40.           if (mx >= figures[i].x1) and (mx <= figures[i].x2) and (my >= figures[i].y1) and (my <= figures[i].y2) then figures[i].move := true;
  41.         end;
  42.     end;
  43.   end;
  44. end;
  45.  
  46. procedure mouseunhold(mx, my, mb: integer);
  47. begin
  48.   for var i := 1 to 2 do
  49.   begin
  50.     if figures[i].move = true then
  51.     begin
  52.       figures[i].move := false;
  53.     end;
  54.   end;
  55. end;
  56.  
  57. procedure mousemove(mx, my, mb: integer);
  58. begin
  59.   for var i := 1 to 2 do
  60.   begin
  61.     if figures[i].move = true then
  62.     begin
  63.       case figures[i].t of
  64.         C:
  65.           begin
  66.             figures[i].x1 := mx;
  67.             figures[i].y1 := my;
  68.             figures[i].sx := 0;
  69.             figures[i].sy := 0;
  70.           end;
  71.         R:
  72.           begin
  73.             figures[i].x1 := mx;
  74.             figures[i].y1 := my;
  75.             figures[i].x2 := figures[i].x1 + (figures[i].x2 - figures[i].x1);
  76.             figures[i].y2 := figures[i].y1 + (figures[i].y2 - figures[i].y1);
  77.             figures[i].sx := 0;
  78.             figures[i].sy := 0;
  79.           end;
  80.       end;
  81.     end;
  82.   end;
  83. end;
  84.  
  85. begin
  86.   OnMouseDown := mouseclick;
  87.   OnMouseUp := mouseunhold;
  88.   OnMouseMove := mousemove;
  89.   LockDrawing;
  90.   SetBrushColor(clGreen);
  91.   figures[1].x1 := 640 div 2;
  92.   figures[1].y1 := 480 div 2;
  93.   figures[1].w := 3;
  94.   figures[1].r := 25;
  95.   figures[1].t := C;
  96.   figures[1].m := B;
  97.   figures[2].x1 := 640 div 6;
  98.   figures[2].y1 := 480 div 6;
  99.   figures[2].x2 := 640 div 4;
  100.   figures[2].y2 := 480 div 4;
  101.   figures[2].w := 10;
  102.   figures[2].t := R;
  103.   figures[2].m := S;
  104.   while true do
  105.   begin
  106.     window.Clear;
  107.     TextOut(0, 0, figures[2].move.ToString);
  108.     for var i := 1 to 2 do
  109.     begin
  110.       case figures[i].t of
  111.         C:
  112.           begin
  113.             figures[i].y1 := figures[i].y1 + figures[i].sy;
  114.             if figures[i].y1 + figures[i].r > 480 then
  115.             begin
  116.               figures[i].y1 := 480 - figures[i].r;
  117.               if figures[i].m = B then figures[i].sy := -figures[i].sy + figures[i].w;
  118.             end;
  119.             Circle(figures[i].x1, figures[i].y1, figures[i].r);
  120.           end;
  121.         R:
  122.           begin
  123.             figures[i].y1 := figures[i].y1 + figures[i].sy;
  124.             figures[i].y2 := figures[i].y2 + figures[i].sy;
  125.             if figures[i].y2 > 480 then
  126.             begin
  127.               figures[i].y1 := figures[i].y1 - figures[i].sy;
  128.               figures[i].y2 := 480;
  129.               if figures[i].m = B then figures[i].sy := -figures[i].sy + figures[i].w;
  130.             end;
  131.             Rectangle(figures[i].x1, figures[i].y1, figures[i].x2, figures[i].y2);
  132.           end;
  133.       end;
  134.       figures[i].sy := figures[i].sy + 1;
  135.     end;
  136.     Redraw;
  137.   end;
  138. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement