home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 268_01 / demoibm.c < prev    next >
Text File  |  1987-05-23  |  19KB  |  843 lines

  1. /*                      Demo4.c
  2. *
  3. *    This program is designed to illustate some of the features contained
  4. *  in the UC4 library.  It uses the 4 color medium resolution mode of the
  5. *  IBM PC and compatibles.  A second version of the library is available
  6. *  to be used with the 16 color medium resolution mode (mode 9) on the
  7. *  Tandy 1000 computer.
  8. */
  9.  
  10. #include <uc.h>
  11.  
  12. int i;
  13.  
  14. main()
  15. {
  16.  
  17.    int start = 9;
  18.  
  19.    sm(4);
  20.    backclr(1);
  21.  
  22.    gothic('U',10,start+0,3);
  23.    gothic('n',10,start+25,3);
  24.    gothic('i',10,start+45,3);
  25.    gothic('c',10,start+60,3);
  26.    gothic('o',10,start+80,3);
  27.    gothic('r',10,start+100,3);
  28.    gothic('n',10,start+120,3);
  29.  
  30.    gothic('S',10,start+150,3);
  31.    gothic('o',10,start+170,3);
  32.    gothic('f',10,start+190,3);
  33.    gothic('t',10,start+205,3);
  34.    gothic('w',10,start+220,3);
  35.    gothic('a',10,start+240,3);
  36.    gothic('r',10,start+260,3);
  37.    gothic('e',10,start+280,3);
  38.  
  39.    raschar('P', 50, start + 70, 2, 2, 3);
  40.    raschar('r', 50, start + 90, 2, 2, 3);
  41.    raschar('e', 50, start + 110, 2, 2, 3);
  42.    raschar('s', 50, start + 130, 2, 2, 3);
  43.    raschar('e', 50, start + 150, 2, 2, 3);
  44.    raschar('n', 50, start + 170, 2, 2, 3);
  45.    raschar('t', 50, start + 190, 2, 2, 3);
  46.    raschar('s', 50, start + 210, 2, 2, 3);
  47.    victory();
  48.    unicorn();
  49.    greenslv();
  50.    atsay(24, 3, 2, 0,"Copyright (c) 1986 David A. Miller");
  51.    cntue();
  52.    waitkey();
  53.    sm(4);       /* this resets the mode which in effect is a
  54.                    clear screen command.                      */
  55.    backclr(9);
  56.  
  57.    printf("\n\n\n  A demonstration of IBM PC graphics\n");
  58.    printf(" using the 4 color med. resolution mode\n");
  59.    printf(" and the unicorn library of functions.\n");
  60.    printf(" This library is designed to work with \n");
  61.    printf(" the Microsoft C small model. It has\n");
  62.    printf(" been written using Microsoft C 4.0 \n");
  63.    printf(" and the Microsoft Assembler 4.0.\n");
  64.    printf("    Not all library functions are\n");
  65.    printf(" illustrated in this demo.  The\n");
  66.    printf(" library is capable of many graphics\n");
  67.    printf(" concepts including points, lines,\n");
  68.    printf(" circles, ellipses (these may be \n");
  69.    printf(" rotated from the vertical or\n");
  70.    printf(" horizontal and colorful print\n");
  71.    printf(" including different fonts.  We\n");
  72.    printf(" hope you enjoy the Unicorn library!\n\n");
  73.    printf(" Version 4.0 pre-release for Microsoft\n");
  74.    printf(" C small model.\n");
  75.    printf("  Copyright (C) 1986 David A. Miller\n");
  76.    atsay(23,8,2,0,"Press any key to continue");
  77.    waitkey();
  78.    sm(4);       /* this resets the mode which in effect is a
  79.                    clear screen command.                      */
  80.    backclr(14);
  81.  
  82.  
  83.  
  84.    pg1();
  85.    waitkey();
  86.    sm(4);
  87.    backclr(1);
  88.  
  89.  
  90.  
  91.    pg2();
  92.    cntue();
  93.    waitkey();
  94.    sm(4);
  95.    backclr(1);
  96.  
  97.    pg3();
  98.    cntue();
  99.    waitkey();
  100.    sm(4);
  101.    backclr(9);
  102.  
  103.    atom();
  104.    cntue();
  105.    waitkey();
  106.    sm(4);
  107.    backclr(1);
  108.  
  109.    printf("   The next screen will demonstrate\n\n");
  110.    printf("    T U R T L E  F U N C T I O N S");
  111.  
  112.    burble(200, 300);
  113.  
  114.    printf("\n\n\n\n\n   The delay function is used to");
  115.    printf("\n   slow down the display of lines\n");
  116.    cntue();
  117.    waitkey();
  118.    palette(0,5,8);
  119.  
  120.    pg5();
  121.    cntue();
  122.    waitkey();
  123.    sm(4);
  124.    backclr(1);
  125.  
  126.    script('P', 5, 100, 3);
  127.    script('a', 5, 116, 3);
  128.    script('l', 5, 132, 3);
  129.    script('e', 5, 148, 3);
  130.    script('t', 5, 164, 3);
  131.    script('t', 5, 180, 3);
  132.    script('e', 5, 196, 3);
  133.  
  134.    redalert();
  135.  
  136.    printf("\n\n\n\nThe following page illustrates\n");
  137.    printf("the palette command.  This command\n");
  138.    printf("allows the programmer to control the\n");
  139.    printf("color set and background color with\n");
  140.    printf("one command.  There are a total of 6\n");
  141.    printf("sets of three colors that may be \n");
  142.    printf("displayed.  Three of these are normal;\n");
  143.    printf("while the other three are bright\n");
  144.    printf("versions of the basic three.\n");
  145.    printf("\n\n     Press any key to continue\n");
  146.    waitkey();
  147.  
  148.    pg6();
  149.    cntue();
  150.    waitkey();
  151.    sm(4);
  152.    backclr(9);
  153.  
  154.  
  155.    pg7();
  156.    cntue();
  157.    waitkey();
  158.    sm(4);
  159.    backclr(9);
  160.  
  161.  
  162.    pg8();
  163.    atsay(24,7,3,0, "Press any key to continue");
  164.    waitkey();
  165.    sm(4);
  166.    backclr(9);
  167.  
  168.    pgf();
  169.    greenslv();
  170.    waitkey();
  171.    sm(3);
  172.    backclr(1);
  173.  
  174. }  /*  End of main program */
  175.  
  176.  
  177.  
  178. pg1()
  179. {
  180.    burble(200,300);
  181.  
  182.    atsay(10,5,2,0, "The next page will demonstrate");
  183.    atsay(11,5,2,0, "some of the simple graphics");
  184.    atsay(12,5,2,0, "primitives including dots,");
  185.    atsay(13,5,2,0, "lines, filled boxes and");
  186.    atsay(14,5,2,0, "rectangles. ");
  187.    atsay(20,5,3,0, "Press any key to continue");
  188. }
  189.  
  190. pg2()
  191. {
  192.    int i;
  193.  
  194.    for(i=0; i <= 20; i++)
  195.       point(20, 10+i*2, i % 4);
  196.    box(50,20,80,50,1);
  197.    boxfill(54,24,76,46,2);
  198.    box1(50,80,80,110,2,1);
  199.    box2(50,140,80,170,3,1);
  200.    circle(65,240,50,1,1,3);
  201.    paint(65,240,2,3);
  202.    line(120,20,190,300,1);
  203.    line(190,20,120,300,2);
  204.    line(155,20,155,300,3);
  205. }
  206.  
  207. pg3()
  208. {
  209.    atsay(7,5,3,0, "The following screen will further");
  210.    atsay(8,5,3,0, "demonstrate the circle function");
  211.    atsay(9,5,3,0, "and introduce the rotated ellipse");
  212.    atsay(10,5,3,0, "function.  The latter allows the");
  213.    atsay(11,5,3,0, "user to draw an ellipse with a");
  214.    atsay(12,5,3,0, "specified aspect and angle of");
  215.    atsay(13,5,3,0, "rotation.");
  216. }
  217.  
  218. pg5()
  219. {
  220.  
  221.    turnright(150);     /*  Double Triangle  */
  222.  
  223.    pencolor(1);
  224.  
  225.    forward(50);
  226.  
  227.    delay(500);
  228.    turnright(120);
  229.    forward(50);
  230.    delay(500);
  231.    turnright(120);
  232.    forward(100);
  233.    delay(500);
  234.    turnleft(120);
  235.    forward(50);
  236.    delay(500);
  237.    turnleft(120);
  238.    forward(50);
  239.  
  240.    turnright(180);
  241.    forward(50);
  242.  
  243.    pencolor(0);
  244.  
  245.    forward(50);
  246.    turnright(120);
  247.    pencolor(2);
  248.    delay(500);
  249.    forward(100);
  250.    turnright(60);
  251.    delay(500);
  252.    forward(100);
  253.    turnright(60);
  254.    delay(500);
  255.    forward(100);
  256.    turnright(60);
  257.    delay(500);
  258.    forward(100);
  259.    turnright(60);
  260.    delay(500);
  261.    forward(100);
  262.    turnright(60);
  263.    delay(500);
  264.    forward(97);
  265.  
  266.    turnright(72);
  267.    forward(5);
  268.    pencolor(0);
  269.    forward(48);
  270.    turnright(96);
  271.  
  272.    turnleft(72);
  273.    pencolor(3);
  274.    forward(90);
  275.    turnright(72);
  276.    forward(90);
  277.    turnright(72);
  278.    forward(90);
  279.    turnright(72);
  280.    forward(90);
  281.    turnright(73);
  282.    forward(90);
  283.    pencolor(0);
  284.  
  285.    paint(90,160,3,1);
  286.    paint(110,160,3,1);
  287.  
  288.    burble(100,200);
  289.  
  290.    paint(40,160,2,3);
  291.    paint(182,160,1,2);
  292.  
  293.  }
  294.  
  295.  
  296.  
  297.  
  298. pg6()
  299. {
  300.    palette(2,4,0);
  301.    house();
  302.  
  303.    palette(0,5,0);
  304.    house();
  305.  
  306.    palette(0,4,0);
  307.    palette(0,4,0);
  308.    house();
  309.  
  310. }
  311.  
  312. house()
  313. {
  314.    for(i=0;i<=120;i++)
  315.       point(rand() / 165,rand() / 103, rand() / 8192);
  316.  
  317.    line(180,0,180,319,1);        /* grass line */
  318.    paint(183,10,1,1);            /*   grass */
  319.    line(150,50,120,110,1);
  320.    line(120,110,152,160,1);
  321.  
  322.    line(140,70,180,70,1);
  323.    line(140,140,180,140,1);
  324.    line(180,70,180,140,1);
  325.  
  326.    line(160,80,180,80,1);
  327.    line(160,95,180,95,1);
  328.    line(160,80,160,95,1);
  329.  
  330.  
  331.    line(150,110,170,110,1);       /* Window */
  332.    line(150,120,170,120,1);
  333.    line(150,130,170,130,1);
  334.    line(150,110,150,130,1);
  335.    line(160,110,160,130,1);
  336.    line(170,110,170,130,1);
  337.    paint(155,115,2,1);             /* color the widow panes */
  338.    paint(155,125,2,1);
  339.    paint(165,115,2,1);
  340.    paint(165,125,2,1);
  341.    paint(130,110,3,1);            /* color the house  */
  342.  
  343.    line(130,100,130,120,2);       /* lines in the house */
  344.    line(161,75,161,79,2);
  345.    line(155,86,155,97,2);
  346.    line(165,100,165,107,2);
  347.    line(161,72,161,78,2);
  348.    line(142,70,142,93,2);
  349.    line(147,100,147,116,2);
  350.  
  351.    paint(170,90,2,1);             /*  color the door   */
  352.    circle(170,90,2,1,1,1);        /*    knob           */
  353.    paint(170,90,2,1);             /*   fill it         */
  354.    line(114,124,128,124,2);       /*   chimney         */
  355.    line(114,136,136,136,2);
  356.    line(114,124,114,136,2);
  357.    li