Движение машины, убрать тень - Free Pascal
Формулировка задачи:
вот прога. движение объекта получается с "тенью". как ее убрать? можно ли обойтись без
процедуры движения..?
___________
uses crt, graph; var gd, gm, a,b: integer; procedure car (x,y: integer); begin setcolor (yellow); line (x,y, x+80, y); line (x+80,y,x+120, y+40); line (x+120, y+40, x+160, y+40); line (x+160, y+40, x+160, y+80); line (x+160, y+80, x-40, y+80); line (x-40, y+80, x-40, y+40); line (x-40, y+40, x-20, y+40); line (x-20, y+40, x, y); circle (x+20, y+80, 20); circle (x+100, y+80, 20); end; begin gd:=detect; a:=200; b:=200; initgraph (gd, gm, ' '); repeat car (a,b); delay (100); car(a,b); a:=a+25 until keypressed; closegraph; end.
Решение задачи: «Движение машины, убрать тень»
textual
Листинг программы
uses wincrt, graph; procedure car (x,y: integer); begin setcolor (yellow); line (x,y, x+80, y); line (x+80,y,x+120, y+40); line (x+120, y+40, x+160, y+40); line (x+160, y+40, x+160, y+80); line (x+160, y+80, x-40, y+80); line (x-40, y+80, x-40, y+40); line (x-40, y+40, x-20, y+40); line (x-20, y+40, x, y); circle (x+20, y+80, 20); circle (x+100, y+80, 20); end; var gd, gm, a,b: integer; begin gd:=detect; a:=200; b:=200; initgraph (gd, gm, ' '); repeat cleardevice; car (a,b); delay (50); a:=a+5 until a>=getmaxX-160; readkey end.
Объяснение кода листинга программы
- Объявлены переменные
gd,gm,a,bтипаinteger. - Переменная
gdинициализируется значениемdetect. - Переменные
aиbинициализируются значением200. - Вызов функции
initgraphс аргументамиgd,gm,' 'для инициализации графического режима. - Запускается бесконечный цикл.
- В начале цикла экран очищается.
- Вызывается процедура
carс аргументамиa,b. - После вызова процедуры
carпроисходит задержка в 50 миллисекунд. - Значение переменной
aувеличивается на 5. - Цикл продолжается до тех пор, пока значение переменной
aне станет большеgetmaxX-160. - В конце цикла вызывается функция
readkeyдля чтения нажатой клавиши. - В процедуре
carпроисходит рисование автомобиля на экране. - Линии автомобиля рисуются с помощью функции
line. - Функция
setcolorиспользуется для установки цвета на желтый. - Функция
circleиспользуется для рисования кругов. - Переменные
x,yиспользуются в качестве аргументов для функцийlineиcircle. - Значения переменных
x,yувеличиваются на 80 и 40 соответственно для рисования автомобиля. - В конце процедуры
carпроисходит рисование колес автомобиля с помощью функцииcircle. - Колеса автомобиля рисуются в двух разных местах на экране.
- Значения переменных
x,yувеличиваются на 100 для рисования второго колеса.