Найти ошибку в программе перемещения круга - 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 SetPenColor(clWhite); SetBrushColor(clWhite); Circle(X, Y, R); RNew := R; case Key of VK_Up: if Y >= R + Delta Then Y := Y - Delta; VK_Right: if X <= WW - (R + Delta) Then X := X + Delta; VK_Down: if Y <= WH - (R + Delta) Then Y := Y + Delta; VK_Left: if X >= R + Delta Then X := X - Delta; VK_Add: //Проверим все 4 стороны круга if (X + R + Delta < WindowWidth) AND (X - R - Delta > 0) AND (Y + R + Delta < WindowHeight) AND (Y - R - Delta > 0) Then RNew := R + Delta; VK_Subtract: if (R - Delta >= minR) Then RNew := R - Delta; End; if R <> RNew then R := RNew; SetPenColor(clRed); SetBrushColor(clRed); Circle(X, Y, R); Redraw end; begin LockDrawing; 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); Redraw; //Событию присваивается ТОЛЬКО ОДНА процедура OnKeyDown := KeyDown; end.
Объяснение кода листинга программы
Список элементов кода:
- Объявление переменных и констант
- Определение процедуры KeyDown, которая обрабатывает нажатия клавиш
- Проверка нажатия клавиш и изменение координат круга при необходимости
- Проверка всех 4 сторон круга при нажатии клавиши VK_Add
- Проверка нажатия клавиши VK_Subtract и уменьшение радиуса круга при необходимости
- Сравнение текущего радиуса круга с новым значением и обновление радиуса при необходимости
- Очистка и обновление графического окна после изменения круга
- Установка начальных значений переменных перед основным циклом программы
- Запуск основного цикла программы
- Завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д