Конечно! Для создания мигающего светофора в Pascal с использованием библиотеки GraphABC, необходимо выполнить несколько шагов. В этом примере мы создадим простую программу, которая будет отображать три состояния светофора (красный, желтый и зеленый) и переключаться между ними с заданным интервалом времени.
- Импортируйте библиотеку GraphABC.
- Определите размеры и координаты светофора.
- Создайте процедуру для рисования каждого состояния светофора.
- Используйте цикл для переключения между состояниями с задержкой.
Вот пример кода для создания мигающего светофора:
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.
Объяснение кода:
- Константы: Определены размеры и координаты для размещения кругов (огней светофора).
- Процедура
DrawTrafficLight
: Эта процедура рисует светофор с тремя огнями. Она принимает три логических параметра, указывающих, какие огни должны быть включены.
- Основной цикл: В бесконечном цикле поочередно вызывается процедура
DrawTrafficLight
для каждого состояния светофора (красный, желтый, зеленый) с задержкой (Sleep
) в 1000 миллисекунд (1 секунда).
Этот код создает окно с тремя кругами, представляющими огни светофора, и переключает их по очереди, создавая эффект мигания. Вы можете настроить задержку и размеры по своему усмотрению.