русский

Воспоминания, Turbo C 01.06.2024

08.06.24 20:24
Re: Воспоминания, Turbo C 01.06.2024
 
uscheswoi_82 коренной житель
uscheswoi_82

Всем добрый вечер!

Сегодня не хочу заниматься 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;
}


Вот результаты работы программы светофор, написаный на языке Си:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Tagebuch der schwerbehinderten Person
 

Sprung zu