Как передвигать объект клавишами: вперед,назад,влево,вправо? - Pascal ABC
Формулировка задачи:
эту тему уже многие затрагивали но не можите ли сказать?
Решение задачи: «Как передвигать объект клавишами: вперед,назад,влево,вправо?»
textual
Листинг программы
uses crt,graphABC; var x0,y0,w,h,x,y:integer; c:char; procedure Move(x,y,c:integer); //рисование begin setpencolor(c); circle(x,y,20); end; begin HideCursor; //уберем курсор w:=windowwidth; //середина экрана h:=windowheight; x0:=w div 2; y0:=h div 2; x:=x0;y:=y0; setpenwidth(3); //толшина линии Move(x0,y0,clred);//рисуем textout(10,5,'Управление - стрелки'); textout(10,25,'Выход - Esc'); x:=x0; y:=y0; repeat if keypressed then begin c:=readkey; case c of #72:begin //вверх Move(x,y,clwhite);//стираем(рисуем белым) y:=y-5;//перемещаемся Move(x,y,clred);//снова рисуем end; #75:begin //вправо Move(x,y,clwhite); x:=x+5; Move(x,y,clred); end; #80:begin //вниз delay(50); Move(x,y,clwhite); y:=y+5; Move(x,y,clred); end; #77:begin //влево delay(50); Move(x,y,clwhite); x:=x-5; Move(x,y,clred); end; end; end; until c=#27; end.
Объяснение кода листинга программы
- Установка начального положения объекта на экране.
- Отображение клавиш управления и выхода.
- Проверка нажатия клавиш.
- Перемещение объекта вверх при нажатии клавиши
вверх
. - Перемещение объекта вправо при нажатии клавиши
вправо
. - Задержка перед перемещением объекта вниз для создания эффекта движения.
- Перемещение объекта вниз при нажатии клавиши
вниз
. - Задержка перед перемещением объекта влево для создания эффекта движения.
- Перемещение объекта влево при нажатии клавиши
влево
. - Проверка нажатия клавиши выхода.
- Повторение цикла до тех пор, пока не будет нажата клавиша выхода.
- Установка начального цвета линии и рисование объекта в его новом положении.
- Смена цвета линии на белый для стирания предыдущего объекта.
- Изменение координат объекта в соответствии с направлением движения.
- Возвращение к начальному цвету линии после стирания.
- Изменение координат объекта в соответствии с направлением движения.
- Смена цвета линии на белый для стирания предыдущего объекта.
- Изменение координат объекта в соответствии с направлением движения.
- Возвращение к начальному цвету линии после стирания.
- Изменение координат объекта в соответствии с направлением движения.