Движение машины, убрать тень - 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 для рисования второго колеса.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д