Увеличивать ромб нажатием клавиши - 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.
Объяснение кода листинга программы
Список элементов кода:
- Объявление переменных R, WW, WH, X, Y типа Integer.
- Объявление процедуры KeyDown с параметром Key типа Integer.
- Внутри процедуры KeyDown объявление переменной RNew типа Integer.
- В случае нажатия клавиши VK_Add, если (X+R+Delta) < ширина окна и (Y+R+Delta) < высота окна, то RNew = R + Delta.
- В случае нажатия клавиши VK_Subtract, если R-Delta >= minR, то RNew = R - Delta.
- Если R не равно RNew, то это значит, что была нажата одна из клавиш и выполняется одно из условий.
- В этом случае, цвет кисти и пера устанавливается в белый, рисуется окружность с радиусом R, затем цвет кисти и пера устанавливается в красный и рисуется окружность с новым радиусом RNew.
- Центр окна устанавливается в X, Y.
- Ширина и высота окна делятся на 2 и присваиваются X и Y соответственно.
- Устанавливается линейная интерполяция в значение False.
- Устанавливается цвет кисти и пера в красный.
- Устанавливается радиус окружности в minR.
- Рисуется окружность с радиусом R.
- Устанавливается обработчик события OnKeyDown = KeyDown.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д