Вход на сайт
Воспоминания, Turbo C 01.06.2024
1554 просмотров
Перейти к просмотру всей ветки
uscheswoi_82 коренной житель
в ответ uscheswoi_82 06.06.24 14:47
Всем добрый вечер!
Сегодня не хочу заниматься Embedded, а хочу продолжить разговор про программирование на Си. Давайте сегодня поговорим про библиотеку Turbo C BGI. Это очень классная библиотека, для работы с графикой. Там можно рисовать точки, окружности, прямоугольники, изгибы, 3х-мерные прямоугольники, выводить текст, менять фон и цвет, делать заливку. Я сделаю пример светофора на Си, вот код traficlight.c:
#include <stdio.h> #include <graphics.h> #define TRAFICLIGHT_BORDER_COLOR LIGHTGRAY #define TRAFICLIGHT_BG_COLOR DARKGRAY #define TRAFICLIGHT_BG_COLOR_RED RED #define TRAFICLIGHT_BG_COLOR_YELLOW BROWN #define TRAFICLIGHT_BG_COLOR_GREEN GREEN #define TRAFICLIGHT_ON_BG_COLOR_RED LIGHTRED #define TRAFICLIGHT_ON_BG_COLOR_YELLOW YELLOW #define TRAFICLIGHT_ON_BG_COLOR_GREEN LIGHTGREEN int main(void) { int color = 0; int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if(errorcode != grOk) return -1; setbkcolor(BLUE); setcolor(WHITE); outtextxy(10, 450, "Press any key to quit..."); setcolor(TRAFICLIGHT_BORDER_COLOR); rectangle(10, 10, 70, 200); rectangle(30, 200, 50, 290); setfillstyle(SOLID_FILL, TRAFICLIGHT_BG_COLOR); floodfill(12, 12, TRAFICLIGHT_BORDER_COLOR); setfillstyle(SOLID_FILL, TRAFICLIGHT_BG_COLOR); floodfill(32, 202, TRAFICLIGHT_BORDER_COLOR); circle(40, 42, 25); circle(40, 102, 25); circle(40, 162, 25); while(!kbhit()) { setfillstyle(SOLID_FILL, TRAFICLIGHT_BG_COLOR_RED); floodfill(42, 44, TRAFICLIGHT_BORDER_COLOR); setfillstyle(SOLID_FILL, TRAFICLIGHT_BG_COLOR_YELLOW); floodfill(42, 104, TRAFICLIGHT_BORDER_COLOR); setfillstyle(SOLID_FILL, TRAFICLIGHT_BG_COLOR_GREEN); floodfill(42, 164, TRAFICLIGHT_BORDER_COLOR); if(color == 0) { setfillstyle(SOLID_FILL, TRAFICLIGHT_ON_BG_COLOR_RED); floodfill(42, 44, TRAFICLIGHT_BORDER_COLOR); } else if(color == 1) { setfillstyle(SOLID_FILL, TRAFICLIGHT_ON_BG_COLOR_RED); floodfill(42, 44, TRAFICLIGHT_BORDER_COLOR); setfillstyle(SOLID_FILL, TRAFICLIGHT_ON_BG_COLOR_YELLOW); floodfill(42, 104, TRAFICLIGHT_BORDER_COLOR); } else if(color == 2) { setfillstyle(SOLID_FILL, TRAFICLIGHT_ON_BG_COLOR_GREEN); floodfill(42, 164, TRAFICLIGHT_BORDER_COLOR); } else color = -1; delay(1000); color++; } getch(); closegraph(); return 0; }
Вот результаты работы программы светофор, написаный на языке Си:
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Дневник тяжелобольного инвалида