Уменьшить программу - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Уменьшите программу пожалуйста.
Листинг программы
  1. Uses GraphABC;
  2. Procedure Gr8(X,Y,R:Integer);
  3. Var
  4. R3:Integer;
  5. Begin;
  6. R3:=R div 3;
  7. Line(x+R3,Y,X+2*R3,Y);
  8. Line(x+2*R3,Y,X+R,Y+R3);
  9. Line(x+r,y+r3,x+r,y+2*r3);
  10. Line(x+r,y+2*r3,x+2*r3,y+r);
  11. Line(x+2*R3,Y+R,X+R3,Y+R);
  12. Line(X+r3,y+r,x,y+2*r3);
  13. Line(x,y+2*r3,x,y+r3);
  14. Line(x,y+r3,x+r3,y);
  15. End;
  16. Const
  17. R=40;
  18. K=1000000000;
  19. D=4;
  20. Var
  21. WW,WH,X,Y,DirX,DirY,Kol:Integer;
  22. Begin
  23. CenterWindow;
  24. WW:=Windowwidth;
  25. WH:=Windowheight;
  26. x:=0;
  27. y:=0;
  28. Dirx:=1;
  29. Diry:=1;
  30. Kol:=0;
  31. SetSmoothing(false);
  32. Repeat
  33. Setpencolor(clrandom);
  34. Gr8(X,Y,R);
  35. Sleep(10);
  36. SetPenColor(clWhite);
  37. Gr8(X,Y,R);
  38. If x>=WW-R Then
  39. DirX:=-1;
  40. If Y>=WH-R Then
  41. DirY:=-1;
  42. If x<=0 Then
  43. Begin
  44. DirX:=1;
  45. Kol:=kol+1;
  46. End;
  47. If y<=0 Then
  48. DirY:=1;
  49. x:=x+dirx*d;
  50. y:=y+diry*d;
  51. Until Kol>=K;
  52. SetPenColor(clblue);
  53. Gr8(X-D,Y-D,R);
  54. End.

Решение задачи: «Уменьшить программу»

textual
Листинг программы
  1. {$reference System.Core.dll}
  2. uses System.Linq, GraphABC;
  3.  
  4. const
  5.   R = 40;
  6.   HalfR = R div 2;
  7.   K = 1000000000;
  8.   D = 4;
  9.  
  10. var
  11.   X, Y: Integer;
  12.   Finished := false;
  13. begin
  14.   CenterWindow;
  15.   x := HalfR; y := HalfR;
  16.   var Dirx := 1;
  17.   var Diry := 1;
  18.   var Kol := 0;
  19.   SetSmoothing(false);
  20.   LockDrawing;
  21.  
  22.   repeat
  23.     Window.Clear;
  24.     Finished := Kol > K;
  25.     Setpencolor(Finished ? clBlue : clRandom);
  26.     DrawPolygon(Enumerable.Range(0, 8).Select((i :integer) ->
  27.                 new Point(x - D * Ord(Finished) + Round(HalfR * sin(Pi / 8 + Pi / 4 * i)),
  28.                           y - D * Ord(Finished) - Round(HalfR * cos(Pi / 8 + Pi / 4 * i)))).ToArray());
  29.     Redraw;
  30.     if Finished then Continue;
  31.    
  32.     if  x >= Windowwidth - HalfR Then DirX := -1;
  33.     DirY := (Y >= Windowheight - HalfR) ? -1 : (Y <= HalfR) ? 1 : DirY;
  34.     DirX := (X >= WindowWidth - HalfR) ? -1 : (X <= HalfR) ? 1 : DirX;
  35.    
  36.     Inc(Kol, Ord(X <= HalfR));
  37.     x := x + dirx * d;
  38.     y := y + diry * d;
  39.     sleep(10);
  40.   until Finished;
  41. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы