Увеличение круга при нажатии клавиши - PascalABC.NET
Формулировка задачи:
Помогите пожалуйста с задачей. Знаю только как сделать крутящийся кружочек
Круг движется по окружности. При попадании круга в I четверть он заполняется клеткой, во II четверть - ///, в III - \\\, в IV - точками. При нажатии клавиши стрелка вверх увеличивается его радиус, стрелка вниз - соответственно уменьшается. Выход по Esc.
Решение задачи: «Увеличение круга при нажатии клавиши»
textual
Листинг программы
uses graphABC; var f:boolean;//переменная для выхода из программы r:integer;//радиус круга procedure KeyDown(Key:integer); begin case Key of VK_Up:r:=r+5; VK_Down:r:=r-5; VK_Escape:f:=false end; end; var xc,yc,x,y,r1:integer; u:real; begin xc:=Window.Width div 2; yc:=Window.Height div 2; r:=20; r1:=110;//радиус вращения круга f:=true; Pen.Color:=clred; Brush.Color:=clRed; lockdrawing; u:=0; repeat clearwindow; Brush.Style:=bsClear; TextOut(100,10,'Стрелка вверх увеличить радиус, стрелка вниз-уменьшить, Esc-выход'); Brush.Style:=bsHatch; x:=xc+round(r1*cos(u)); y:=yc-round(r1*sin(u)); if(x>xc)and(y<yc)then Brush.Hatch:=bhCross else if(x<=xc)and(y<yc)then Brush.Hatch:=bhBackwardDiagonal else if(x<=xc)and(y>=yc)then Brush.Hatch:=bhForwardDiagonal else Brush.Hatch:=bhPercent40; Circle(x,y,r); sleep(50); u:=u+0.05; redraw; OnKeyDown:=KeyDown; until f=false; CloseWindow; end.
Объяснение кода листинга программы
- Объявлены переменные:
- f: булевая переменная для выхода из программы;
- r: целочисленная переменная радиуса круга;
- xc, yc: целочисленные переменные координат центра круга;
- x, y: целочисленные переменные для хранения текущих координат курсора;
- r1: целочисленная переменная радиуса вращения круга;
- u: вещественная переменная для хранения угла поворота;
- f: булевая переменная для выхода из программы;
- Pen.Color, Brush.Color: задают цвет пера и кисти соответственно;
- Brush.Style: определяет стиль кисти (будет использоваться для рисования крестика или точки в зависимости от направления движения мыши);
- TextOut: функция вывода текста на экран;
- Circle: функция рисования круга;
- Sleep: функция задержки выполнения программы;
- OnKeyDown: процедура обработчик нажатия клавиш.
- В основной части программы:
- Инициализируются начальные значения переменных;
- Задаются начальные координаты центра круга;
- Устанавливается начальный угол поворота;
- Запускается основной цикл программы, который выполняется до тех пор, пока переменная f не станет ложной;
- В цикле происходит обновление и вывод на экран текущего состояния;
- При нажатии клавиш выполняется соответствующая обработка (увеличение или уменьшение радиуса);
- Закрывается окно программы.
- В процедуре KeyDown происходит обработка нажатия клавиш:
- Используется оператор switch для определения, какая клавиша была нажата;
- Если нажата клавиша
стрелка вверх
, увеличивается радиус круга; - Если нажата клавиша
стрелка вниз
, уменьшается радиус круга; - Если нажата клавиша
Esc
, устанавливается значение переменной f, что приведет к выходу из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д