Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses graphabc;
- type
- figuretype = (R, C);
- type
- figurematerial = (B, S);
- type
- figure = record
- x1: integer;
- y1: integer;
- x2: integer;
- y2: integer;
- w: integer;
- r: integer;
- sx: integer;
- sy: integer;
- oldx: integer;
- oldy: integer;
- t: figuretype;
- m: figurematerial;
- move: boolean;
- end;
- var
- figures: array[1..100] of figure;
- procedure mouseclick(mx, my, mb: integer);
- begin
- for var i := 1 to 2 do
- begin
- case figures[i].t of
- C:
- begin
- 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;
- end;
- R:
- begin
- 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;
- end;
- end;
- end;
- end;
- procedure mouseunhold(mx, my, mb: integer);
- begin
- for var i := 1 to 2 do
- begin
- if figures[i].move = true then
- begin
- figures[i].move := false;
- end;
- end;
- end;
- procedure mousemove(mx, my, mb: integer);
- begin
- for var i := 1 to 2 do
- begin
- if figures[i].move = true then
- begin
- case figures[i].t of
- C:
- begin
- figures[i].x1 := mx;
- figures[i].y1 := my;
- figures[i].sx := 0;
- figures[i].sy := 0;
- end;
- R:
- begin
- figures[i].x1 := mx;
- figures[i].y1 := my;
- figures[i].x2 := figures[i].x1 + (figures[i].x2 - figures[i].x1);
- figures[i].y2 := figures[i].y1 + (figures[i].y2 - figures[i].y1);
- figures[i].sx := 0;
- figures[i].sy := 0;
- end;
- end;
- end;
- end;
- end;
- begin
- OnMouseDown := mouseclick;
- OnMouseUp := mouseunhold;
- OnMouseMove := mousemove;
- LockDrawing;
- SetBrushColor(clGreen);
- figures[1].x1 := 640 div 2;
- figures[1].y1 := 480 div 2;
- figures[1].w := 3;
- figures[1].r := 25;
- figures[1].t := C;
- figures[1].m := B;
- figures[2].x1 := 640 div 6;
- figures[2].y1 := 480 div 6;
- figures[2].x2 := 640 div 4;
- figures[2].y2 := 480 div 4;
- figures[2].w := 10;
- figures[2].t := R;
- figures[2].m := S;
- while true do
- begin
- window.Clear;
- TextOut(0, 0, figures[2].move.ToString);
- for var i := 1 to 2 do
- begin
- case figures[i].t of
- C:
- begin
- figures[i].y1 := figures[i].y1 + figures[i].sy;
- if figures[i].y1 + figures[i].r > 480 then
- begin
- figures[i].y1 := 480 - figures[i].r;
- if figures[i].m = B then figures[i].sy := -figures[i].sy + figures[i].w;
- end;
- Circle(figures[i].x1, figures[i].y1, figures[i].r);
- end;
- R:
- begin
- figures[i].y1 := figures[i].y1 + figures[i].sy;
- figures[i].y2 := figures[i].y2 + figures[i].sy;
- if figures[i].y2 > 480 then
- begin
- figures[i].y1 := figures[i].y1 - figures[i].sy;
- figures[i].y2 := 480;
- if figures[i].m = B then figures[i].sy := -figures[i].sy + figures[i].w;
- end;
- Rectangle(figures[i].x1, figures[i].y1, figures[i].x2, figures[i].y2);
- end;
- end;
- figures[i].sy := figures[i].sy + 1;
- end;
- Redraw;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement