Нарисовать движущийся квадрат - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу с применением динамических переменных движения квадрата параллельно оси Y,а зачем параллельно оси Х.С изменением направления движения изменять цвет закраски фигуры. Если можно то с описанием.

Решение задачи: «Нарисовать движущийся квадрат»

textual
Листинг программы
  1. uses crt,graph;
  2. var x,y,c:integer;
  3.     size:word;
  4.     p:pointer;
  5. begin
  6. initgraph(x,y,'');
  7. c:=1; //цвет 1=синий
  8. repeat
  9. x:=getmaxX div 2;//по вертикали
  10. y:=15;
  11. size:=ImageSize(x-15,y-15,x+15,y+15);//выделяем участок под квадрат
  12. setcolor(c);//цвет линий
  13. setfillstyle(1,c);//цвет заливки
  14. bar(x-15,y-15,x+15,y+15); //закрашенный квадрат
  15. getmem(p,size);//выделим память под рисунок
  16. getimage(x-15,y-15,x+15,y+15,p^);//сохраним рисунок в буфер
  17. cleardevice; //очистим экран
  18. setcolor(14);//выведем сообщение желтым цветом
  19. settextstyle(0,0,2);
  20. outtextXY(10,10,'Exit any key');
  21. while not keypressed and(y<getmaxY-30) do //пока не нажата клавиша и не низ экрана
  22.  begin
  23.   putimage(x,y,p^,1); //читайте HELP
  24.   delay(10);
  25.   putimage(x,y,p^,1);
  26.   y:=y+5;
  27.  end;
  28. c:=c+1;//увеличим номер цвета
  29. if c=16 then c:=1;//черный на синий
  30. if c=8 then c:=9; //темно-серый на голубой
  31. x:=15; //то же слева на право
  32. y:=getmaxY div 2;
  33. size:=ImageSize(x-15,y-15,x+15,y+15);{Єў*¤а*в 30е30}
  34. setcolor(c);
  35. setfillstyle(1,c);
  36. bar(x-15,y-15,x+15,y+15);
  37. getmem(p,size);
  38. getimage(x-15,y-15,x+15,y+15,p^);
  39. cleardevice;
  40. setcolor(14);
  41. settextstyle(0,0,2);
  42. outtextXY(10,10,'Exit any key');
  43. while not keypressed and(x<getmaxX-30) do
  44.  begin
  45.   putimage(x,y,p^,1);
  46.   delay(10);
  47.   putimage(x,y,p^,1);
  48.   x:=x+5;
  49.  end;
  50. c:=c+1;
  51. if c=16 then c:=1;
  52. if c=8 then c:=9;
  53. until keypressed;//нажатие любой клавиши=конец
  54. freemem(p,size); //освободим память
  55. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы