Нарисовать движущийся квадрат - Turbo Pascal
Формулировка задачи:
Написать программу с применением динамических переменных движения квадрата параллельно оси Y,а зачем параллельно оси Х.С изменением направления движения изменять цвет закраски фигуры.
Если можно то с описанием.
Решение задачи: «Нарисовать движущийся квадрат»
textual
Листинг программы
uses crt,graph; var x,y,c:integer; size:word; p:pointer; begin initgraph(x,y,''); c:=1; //цвет 1=синий repeat x:=getmaxX div 2;//по вертикали y:=15; size:=ImageSize(x-15,y-15,x+15,y+15);//выделяем участок под квадрат setcolor(c);//цвет линий setfillstyle(1,c);//цвет заливки bar(x-15,y-15,x+15,y+15); //закрашенный квадрат getmem(p,size);//выделим память под рисунок getimage(x-15,y-15,x+15,y+15,p^);//сохраним рисунок в буфер cleardevice; //очистим экран setcolor(14);//выведем сообщение желтым цветом settextstyle(0,0,2); outtextXY(10,10,'Exit any key'); while not keypressed and(y<getmaxY-30) do //пока не нажата клавиша и не низ экрана begin putimage(x,y,p^,1); //читайте HELP delay(10); putimage(x,y,p^,1); y:=y+5; end; c:=c+1;//увеличим номер цвета if c=16 then c:=1;//черный на синий if c=8 then c:=9; //темно-серый на голубой x:=15; //то же слева на право y:=getmaxY div 2; size:=ImageSize(x-15,y-15,x+15,y+15);{Єў*¤а*в 30е30} setcolor(c); setfillstyle(1,c); bar(x-15,y-15,x+15,y+15); getmem(p,size); getimage(x-15,y-15,x+15,y+15,p^); cleardevice; setcolor(14); settextstyle(0,0,2); outtextXY(10,10,'Exit any key'); while not keypressed and(x<getmaxX-30) do begin putimage(x,y,p^,1); delay(10); putimage(x,y,p^,1); x:=x+5; end; c:=c+1; if c=16 then c:=1; if c=8 then c:=9; until keypressed;//нажатие любой клавиши=конец freemem(p,size); //освободим память end.
Объяснение кода листинга программы
- Используется библиотека crt и графический модуль graph.
- Задаются переменные x, y, c, size, p.
- Вызывается функция initgraph, передавая в нее координаты x, y и пустую строку. Это позволяет задать начальные параметры для работы с графикой.
- Переменная c инициализируется значением 1, что соответствует синему цвету.
- В цикле while выполняются следующие действия:
- x вычисляется как половина максимального значения по вертикали.
- y устанавливается равным 15.
- size вычисляется как размер участка под квадрат.
- Устанавливается цвет линий и заливки.
- Выводится закрашенный квадрат.
- Выделяется память под рисунок.
- Сохраняется рисунок в буфер.
- Экран очищается.
- Выводится сообщение желтым цветом.
- Устанавливается стиль текста.
- Выводится сообщение
Exit any key
до тех пор, пока не будет нажата клавиша или пока не будет достигнут нижний край экрана. - Переменная c увеличивается на единицу. Если достигнуто максимальное значение цвета (16), то значение переменной c сбрасывается обратно на 1.
- Если значение переменной c равно 8, то значение переменной c сбрасывается на 9, что соответствует темно-серому цвету на голубом.
- Значение переменной x сбрасывается на 15.
- Значение переменной y вычисляется как половина максимального значения по вертикали.
- Цикл while повторяется до тех пор, пока не будет нажата клавиша или пока не будет достигнут верхний край экрана.
- Освобождается память, выделенная под рисунок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д