Увеличивать ромб нажатием клавиши - PascalABC.NET

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

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

Напишите программу, которая решает следующую задачу. В центре стандартного графического окна,рисуется круг минимального размера. C помощью клавиши ‘+’ (VK_Add) можно увеличивать размер ромба, а с помощью клавиши ‘-’ (VK_Subtract) уменьшать его. При этом круг не должен становиться больше высоты графического окна (выходить за его границы) и меньше минимального размера. Минимальный размер круга и величина, на которую он изменяет свой размер, задаются в программе константами. Вот то,что у меня получилось:
В чём ошибка?

Решение задачи: «Увеличивать ромб нажатием клавиши»

textual
Листинг программы
Program Romb;
Uses GraphABC;
const 
  minR=5;  
  Delta=5;
Var
   R, WW, WH, X, Y : Integer;
Procedure KeyDown(Key: Integer);
var RNew:integer;
Begin
  RNew:=R;
  Case Key Of
    VK_Add:
      If (X+R+Delta < WindowWidth) And (Y+R+Delta < WindowHeight)  Then
        RNew := R + Delta;
    VK_Subtract:
      If (R-Delta >= minR) Then 
        RNew := R - Delta;
      End;
  if R<>RNew then begin    
     SetPenColor(clWhite);
     SetBrushColor(clWhite);
     Circle(X, Y, R);
     R:=RNew;
     SetPenColor(clRed);
     SetBrushColor(clRed);
     Circle(X, Y, R);
  end;   
End;  
 
Begin
   CenterWindow;
   WW := WindowWidth;
   WH := WindowHeight;
   X := WW div 2;
   Y := WH div 2;
   SetSmoothing(False);
   SetPenColor(clRed);
   SetBrushColor(clRed);
   R:=minR;
   Circle(X, Y, R);
   OnKeyDown := KeyDown;
End.

Объяснение кода листинга программы

Список элементов кода:

  1. Объявление переменных R, WW, WH, X, Y типа Integer.
  2. Объявление процедуры KeyDown с параметром Key типа Integer.
  3. Внутри процедуры KeyDown объявление переменной RNew типа Integer.
  4. В случае нажатия клавиши VK_Add, если (X+R+Delta) < ширина окна и (Y+R+Delta) < высота окна, то RNew = R + Delta.
  5. В случае нажатия клавиши VK_Subtract, если R-Delta >= minR, то RNew = R - Delta.
  6. Если R не равно RNew, то это значит, что была нажата одна из клавиш и выполняется одно из условий.
  7. В этом случае, цвет кисти и пера устанавливается в белый, рисуется окружность с радиусом R, затем цвет кисти и пера устанавливается в красный и рисуется окружность с новым радиусом RNew.
  8. Центр окна устанавливается в X, Y.
  9. Ширина и высота окна делятся на 2 и присваиваются X и Y соответственно.
  10. Устанавливается линейная интерполяция в значение False.
  11. Устанавливается цвет кисти и пера в красный.
  12. Устанавливается радиус окружности в minR.
  13. Рисуется окружность с радиусом R.
  14. Устанавливается обработчик события OnKeyDown = KeyDown.
  15. Конец программы.

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы