Описание Кода

Тема в разделе "Общие вопросы по С и С++", создана пользователем MahovIV, 13 янв 2014.

  1. MahovIV

    MahovIV New Member

    Регистрация:
    6 июл 2013
    Сообщения:
    2
    Симпатии:
    0
    Объясните, пожалуйста, что делает эта программа? Пожалйста, в комментариях.
    Код (Text):
    #include <graphics.h> // initgraph(), ...
    #include <conio.h>   // getch(), kbhit(), gotoxy()
    #include <stdio.h>   // printf()
    #include <dos.h>      // intr()
    #include <D:\BC31\mousedsg.dat>

    unsigned NewCurs[32];
    int HotPointX,HotPointY;

    void main()
    {

    for( int i=0; i<16; i++ )
    { NewCurs[i] = (~MouseDsgn1[i]);
    NewCurs[i+16]= MouseDsgn1[i];
    }
    HotPointX=(char)(MouseDsgn1[16]>>8);
    HotPointY=(char) MouseDsgn1[16];

    struct REGPACK reg;
    reg.r_ax=0; intr(0x33,&reg);
    if (reg.r_ax == 0)       
    { printf("............! Press any key to exit...");
    getch(); return; }
    else
    { printf("............ %d .... ....!", reg.r_bx);
    getch(); }

    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver,&gmode,"G:\\PROGRAMS\\BC31\\BGI");
    if((errorcode = graphresult()) != grOk)
    {
    printf("Graphics error: %s\n", grapherrormsg(errorcode));
    printf("Press any key to exit..."); getch(); return;
    }

    reg.r_bx=HotPointX;
    reg.r_cx=HotPointY;
    reg.r_es=FP_SEG(&NewCurs);
    reg.r_dx=FP_OFF(&NewCurs);
    reg.r_ax=9; intr(0x33,&reg);

    reg.r_ax=1; intr(0x33,&reg);    //....

    int Xp = -1,Yp = -1;
    while (!kbhit())                //...
    { reg.r_ax=3; intr(0x33,&reg); //...

    gotoxy(1,1);
    printf("x =%3d y =%3d", reg.r_cx, reg.r_dx); //...

    if (reg.r_bx == 0) //
    {  printf("                              ");
    }
    else if( reg.r_bx == 1 )
    {
    printf("  ... .... ... .......       ");
    setcolor(RED);
    reg.r_ax=2; intr(0x33,&reg); // . . .
    line(Xp, Yp, reg.r_cx, reg.r_dx);
    reg.r_ax=1; intr(0x33,&reg);  // ...
    }
    else if( reg.r_bx == 2 )
    {
    printf(" .... .... .... ....        ");
    setcolor(GREEN);
    circle(reg.r_cx,reg.r_dx,3);
    }
    else if( reg.r_bx == 3 )
    {
    printf(" ..... .... .... .... ....  ");
    reg.r_ax=2; intr(0x33,&reg);  // ...
    ;  // ...
    reg.r_ax=1; intr(0x33,&reg);  // ...
    }
    else printf("  UnKnown buttons combination...%d ",reg.r_bx);

    Xp = reg.r_cx;
    Yp = reg.r_dx;
    }//while
    closegraph();
    }
    Эту программу тоже.
    Код (Text):
    #include <graphics.h> // initgraph(), ...
    #include <conio.h>   // getch(), kbhit(), gotoxy()
    #include <stdio.h>   // printf()
    #include <dos.h>      // intr()
    #include <bios.h>    // bioskey()

    #define KB_ESC      0x011B
    #define KB_ENTER     0x1C0D
    #define KB_HOME   0x4700
    #define KB_END      0x4F00
    #define KB_BS        0x0E08
    #define KB_TAB      0x0F09
    #define KB_PLUS   0x4E2B
    #define KB_MINUS     0x4A2D
    #define KB_UPARROW  0x4800
    #define KB_LEFTARROW 0x4B00
    #define KB_RIGHTARROW 0x4D00
    #define KB_DOWNARROW 0x5000

    void main()
    {
    struct REGPACK reg;
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver, &gmode, "G:\\PROGRAMS\\BC31\\BGI");

    reg.r_ax=0; intr(0x33,&reg);
    if (reg.r_ax == 0)       
    { printf("............! Press any key to exit...");
    getch(); return; }
    else
    { printf("............ %d .... ....!", reg.r_bx);
    getch(); }

    int FontSize=1;
    while( 1 )
    {
    int CharWidth =textwidth ("_"); // ...
    int CharHeight=textheight("│"); // ...

    reg.r_ax=3; intr(0x33,&reg);

    if( bioskey(1) )
    {
    int key = bioskey(0);

    if( key == KB_ESC ){ break;  }
    else if(key == KB_LEFTARROW )
    { reg.r_cx-=CharWidth;
    reg.r_ax=4; intr(0x33,&reg);}
    else if(key == KB_RIGHTARROW)
    { reg.r_cx+=CharWidth;
    reg.r_ax=4; intr(0x33,&reg);}
    else if(key == KB_UPARROW)
    { reg.r_dx-=CharHeight;
    reg.r_ax=4; intr(0x33,&reg);}
    else if(key == KB_DOWNARROW)
    { reg.r_dx+=CharHeight;
    reg.r_ax=4; intr(0x33,&reg);}
    else if(key == KB_HOME)
    { reg.r_cx = reg.r_dx = 0;
    reg.r_ax=4; intr(0x33,&reg);}
    else if(key == KB_END)
    { reg.r_cx = getmaxx() -CharWidth;
    reg.r_dx = getmaxy() -CharHeight;
    reg.r_ax =4; intr(0x33,&reg); }
    else if(key == KB_ENTER)
    { reg.r_cx = 0; reg.r_dx+=CharHeight;
    reg.r_ax =4; intr(0x33,&reg);}
    else if(key == KB_PLUS)
    { if(FontSize<3)
    settextstyle(0,HORIZ_DIR,++FontSize);}
    else if(key == KB_MINUS)
    { if(FontSize>0)
    settextstyle(0,HORIZ_DIR,--FontSize);}
    else {
    reg.r_ax=2; intr(0x33,&reg);
    char* s = "*"; s[0]=(char)key; outtextxy(Xp, Yp, s);
    reg.r_cx += CharWidth;
    reg.r_ax=4; intr(0x33,&reg);
    reg.r_ax=1; intr(0x33,&reg);  // ...
    }
    } //if(bioskey(1))
    } //while
    closegraph();
    }
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    ты сам то хоть пытался?
    тут даже не все необходимые файлы
     
Загрузка...

Поделиться этой страницей