Помогите сделать в Паскале мигающий светофор (graphabc) Чтобы он норм работал

Тематика Информатика
Уровень 5 - 9 классы
Pascal graphabc светофор мигающий светофор программирование графика анимация кодирование визуализация
0

Помогите сделать в Паскале мигающий светофор (graphabc) Чтобы он норм работал

avatar
задан месяц назад

2 Ответа

0

Для создания мигающего светофора в Pascal (используя graphabc) можно использовать следующий код:

program TrafficLight;

uses Graph;

const
  red = 12;
  yellow = 14;
  green = 10;

var
  gd, gm, errorcode: integer;

procedure DrawTrafficLight();
begin
  SetFillStyle(SolidFill, red);
  Bar(50, 50, 100, 200);
  
  SetFillStyle(SolidFill, yellow);
  Bar(50, 200, 100, 250);
  
  SetFillStyle(SolidFill, green);
  Bar(50, 250, 100, 300);
end;

begin
  gd := D8bit;
  gm := m640x480;
  InitGraph(gd, gm, '');

  if GraphResult  grOk then
  begin
    Writeln('Graphics initialization failed');
    Halt(1);
  end;

  DrawTrafficLight();

  repeat
    SetFillStyle(SolidFill, red);
    Bar(50, 50, 100, 200);
    Delay(1000);
    
    SetFillStyle(SolidFill, yellow);
    Bar(50, 200, 100, 250);
    Delay(1000);
    
    SetFillStyle(SolidFill, green);
    Bar(50, 250, 100, 300);
    Delay(1000);
  until KeyPressed;

  CloseGraph;
end.

Этот код создаст мигающий светофор с красным, желтым и зеленым светодиодами, которые будут мигать с интервалом в 1 секунду. После запуска программы светофор будет мигать до нажатия любой клавиши на клавиатуре.

avatar
ответил месяц назад
0

Конечно! Для создания мигающего светофора в Pascal с использованием библиотеки GraphABC, необходимо выполнить несколько шагов. В этом примере мы создадим простую программу, которая будет отображать три состояния светофора (красный, желтый и зеленый) и переключаться между ними с заданным интервалом времени.

  1. Импортируйте библиотеку GraphABC.
  2. Определите размеры и координаты светофора.
  3. Создайте процедуру для рисования каждого состояния светофора.
  4. Используйте цикл для переключения между состояниями с задержкой.

Вот пример кода для создания мигающего светофора:

program BlinkingTrafficLight;
uses GraphABC;

const
  LightDiameter = 50;
  LightSpacing = 20;
  RedLightY = 50;
  YellowLightY = RedLightY + LightDiameter + LightSpacing;
  GreenLightY = YellowLightY + LightDiameter + LightSpacing;
  LightX = 100;
  DelayTime = 1000; // Задержка в миллисекундах

procedure DrawTrafficLight(redOn, yellowOn, greenOn: Boolean);
begin
  // Фон светофора
  Brush.Color := clBlack;
  Rectangle(LightX - 10, RedLightY - 10, LightX + LightDiameter + 10, GreenLightY + LightDiameter + 10);

  // Красный свет
  if redOn then
    Brush.Color := clRed
  else
    Brush.Color := clDarkRed;
  FillEllipse(LightX, RedLightY, LightX + LightDiameter, RedLightY + LightDiameter);

  // Желтый свет
  if yellowOn then
    Brush.Color := clYellow
  else
    Brush.Color := clOlive;
  FillEllipse(LightX, YellowLightY, LightX + LightDiameter, YellowLightY + LightDiameter);

  // Зеленый свет
  if greenOn then
    Brush.Color := clGreen
  else
    Brush.Color := clDarkGreen;
  FillEllipse(LightX, GreenLightY, LightX + LightDiameter, GreenLightY + LightDiameter);
end;

begin
  // Инициализация окна и графики
  SetWindowSize(300, 400);
  SetWindowCaption('Blinking Traffic Light');

  // Основной цикл мигания светофора
  while True do
  begin
    // Красный свет
    DrawTrafficLight(True, False, False);
    Sleep(DelayTime);

    // Желтый свет
    DrawTrafficLight(False, True, False);
    Sleep(DelayTime);

    // Зеленый свет
    DrawTrafficLight(False, False, True);
    Sleep(DelayTime);
  end;
end.

Объяснение кода:

  1. Константы: Определены размеры и координаты для размещения кругов (огней светофора).
  2. Процедура DrawTrafficLight: Эта процедура рисует светофор с тремя огнями. Она принимает три логических параметра, указывающих, какие огни должны быть включены.
  3. Основной цикл: В бесконечном цикле поочередно вызывается процедура DrawTrafficLight для каждого состояния светофора (красный, желтый, зеленый) с задержкой (Sleep) в 1000 миллисекунд (1 секунда).

Этот код создает окно с тремя кругами, представляющими огни светофора, и переключает их по очереди, создавая эффект мигания. Вы можете настроить задержку и размеры по своему усмотрению.

avatar
ответил месяц назад

Ваш ответ

Вопросы по теме