Нарисовать движущийся квадрат - 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.

Объяснение кода листинга программы

  1. Используется библиотека crt и графический модуль graph.
  2. Задаются переменные x, y, c, size, p.
  3. Вызывается функция initgraph, передавая в нее координаты x, y и пустую строку. Это позволяет задать начальные параметры для работы с графикой.
  4. Переменная c инициализируется значением 1, что соответствует синему цвету.
  5. В цикле while выполняются следующие действия:
    • x вычисляется как половина максимального значения по вертикали.
    • y устанавливается равным 15.
    • size вычисляется как размер участка под квадрат.
    • Устанавливается цвет линий и заливки.
    • Выводится закрашенный квадрат.
    • Выделяется память под рисунок.
    • Сохраняется рисунок в буфер.
    • Экран очищается.
    • Выводится сообщение желтым цветом.
    • Устанавливается стиль текста.
    • Выводится сообщение Exit any key до тех пор, пока не будет нажата клавиша или пока не будет достигнут нижний край экрана.
    • Переменная c увеличивается на единицу. Если достигнуто максимальное значение цвета (16), то значение переменной c сбрасывается обратно на 1.
    • Если значение переменной c равно 8, то значение переменной c сбрасывается на 9, что соответствует темно-серому цвету на голубом.
    • Значение переменной x сбрасывается на 15.
    • Значение переменной y вычисляется как половина максимального значения по вертикали.
    • Цикл while повторяется до тех пор, пока не будет нажата клавиша или пока не будет достигнут верхний край экрана.
  6. Освобождается память, выделенная под рисунок.

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы