home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / cdactual / demobin / share / program / asm / RTGRAF.ZIP / MAP.ZIP / MAP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-19  |  4.9 KB  |  153 lines

  1. /*$mmod l*/
  2. /*$objs rtgraf*/
  3.  
  4. #define    INMAIN  1
  5.  
  6. #include   <stdio.h>
  7. #include   <stdlib.h>
  8. #include   <sys/types.h>
  9. #include   <sys/stat.h>
  10. #include   <ctype.h>
  11. #include   <rtgraf.h>
  12.  
  13. struct  {
  14.    char * fname;
  15.    char far * image;
  16.    } pcs[] = {
  17.        {"mask.msk" ,NULL},     //  0
  18.        {"town.bmp" ,NULL},     //  1
  19.        {"grass.bmp",NULL},     //  2
  20.        {"hmntn.bmp",NULL},     //  3
  21.        {"lmntn.bmp",NULL},     //  4
  22.        {"swamp.bmp",NULL},     //  5
  23.        {"desert.bmp",NULL},    //  6
  24.        { NULL      ,NULL},     //  7
  25.        { NULL      ,NULL},     //  8
  26.        { NULL      ,NULL},     //  9
  27.        { NULL      ,NULL},     //  10
  28.                                //  A cell has 6 sides, each name tells the
  29.                                //  two side the the river passes thru
  30.                                //          2
  31.                                //       1 /-\ 3
  32.                                //       6 \_/ 4
  33.                                //          5
  34.        {"rvr12.bmp",NULL},     //  11
  35.        {"rvr13.bmp",NULL},     //  12
  36.        {"rvr14.bmp",NULL},     //  13
  37.        {"rvr15.bmp",NULL},     //  14
  38.        {"rvr16.bmp",NULL},     //  15
  39.        {"rvr23.bmp",NULL},     //  16
  40.        {"rvr24.bmp",NULL},     //  17
  41.        {"rvr25.bmp",NULL},     //  18
  42.        {"rvr26.bmp",NULL},     //  19
  43.        {"rvr34.bmp",NULL},     //  20
  44.        {"rvr35.bmp",NULL},     //  21
  45.        {"rvr36.bmp",NULL},     //  22
  46.        {"rvr45.bmp",NULL},     //  23
  47.        {"rvr46.bmp",NULL},     //  24
  48.        {"rvr56.bmp",NULL},     //  25
  49.        };
  50. static int pcs_size = sizeof(pcs) / sizeof(pcs[0]);
  51.  
  52. #define MROWS  20
  53. #define MCOLS  13
  54.    static int map [MROWS][MCOLS] = {
  55.  {  2,   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,   3,   3,   },
  56.  {     2,   2,   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,   3},
  57.  {  2,   2,   2,   2,  24,   2,   2,   3,   4,   2,   6,   6,   3,   },
  58.  {    24,   2,   2,  22,  13,  24,   3,   3,   4,   2,   6,   3,   3},
  59.  { 22,  13,  24,  21,   5,  12,   4,   3,   3,   4,   2,   6,   3,   },
  60.  {     5,  12,  15,   5,   5,   4,   3,   4,   3,   4,   2,   3,   3},
  61.  {  2,   5,  20,  19,   2,   2,   1,   4,   4,   3,   2,   2,   3,   },
  62.  {     5,   5,  12,   5,   2,   4,   4,   4,   4,   4,   2,   3,   3},
  63.  {  2,   5,   5,   5,   2,   2,   2,   4,   4,   4,   2,   3,   3,   },
  64.  {     2,   2,   5,   4,   4,   2,   2,   4,   3,   3,   2,   3,   3},
  65.  {  2,   2,   2,   4,   6,   4,   2,   2,   4,   4,   2,   3,   3,   },
  66.  {     2,   2,   6,   6,   6,   4,   2,   2,   4,   4,   2,   3,   3},
  67.  {  2,   2,   2,   6,   1,   6,   2,   2,   2,   4,   4,   1,   3,   },
  68.  {     2,   2,   6,   6,   6,   4,   2,   2,   4,   4,   4,   3,   3},
  69.  {  2,   2,   2,   6,   6,   6,   2,   2,   2,   3,   3,   3,   3,   },
  70.  {     2,   2,   2,   2,   2,   2,   2,   2,   2,   6,   6,   3,   3},
  71.  {  2,   2,   2,   2,   2,   2,   2,   2,   2,   3,   6,   6,   3,   },
  72.  {     2,   2,   2,   2,   2,   2,   2,   2,   2,   6,   6,   3,   3},
  73.  {  2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   6,   3,   3,   },
  74.  {     2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   3,   3},
  75.        };
  76.  
  77.  
  78. int load_files (void);
  79. /************************************************************************
  80.  * MAIN function                                                        *
  81.  ************************************************************************/
  82.  
  83. void   main(argc, argv)
  84. int    argc;
  85. char   *argv[];
  86. {
  87.    int  mode = 0x10;
  88.    int i,r,c,px,py;
  89.  
  90.  
  91.    //  Pick up video mode
  92.  
  93.    if (argc>1)  {
  94.        i = (int) strtol(argv[1],NULL,0);
  95.        if (i == 0)  {
  96.            printf ("Video mode <%s> is invalid!\n",argv[1]);
  97.            exit (-1);
  98.            }
  99.        mode = i;
  100.        }
  101.  
  102.    //  Load images
  103.  
  104.    load_files();
  105.  
  106.    //  Set video mode
  107.  
  108.    if ( (mode==0x10) || (mode == 0x12) || (mode > 0x18))  {
  109.        setmode(mode);  /* what ever is passed */
  110.        }
  111.      else  {
  112.        printf ("Video Mode (%d) look invalid for graphics.\n",mode);
  113.        exit (-1);
  114.        }
  115.  
  116.    clearscreen (2);
  117.    i=1;
  118.    py = 10;
  119.    for ( r=0;r<MROWS;r++)  {
  120.        px = ((r%2==0)? 5:29);
  121.        for (c=0;c<MCOLS;c++)  {
  122.            egamplot (px,py,pcs[map[r][c]].image,pcs[0].image,0);
  123.            px += (32+16);
  124.            }
  125.        py += 16;
  126.        }
  127.  
  128.    getchar();
  129.    setmode(0x03);  /* set 80x25 color alphanumerics */
  130. }
  131. int
  132. load_files (void)
  133.   {
  134.    struct stat f_st;
  135.    FILE    *fp;
  136.    int i;
  137.  
  138.    for (i=0; i< pcs_size; i++)  {
  139.        if (pcs[i].fname == NULL) continue;
  140.        if (stat(pcs[i].fname,&f_st) < 0)  {
  141.            perror (pcs[i].fname);
  142.            exit (-1);
  143.            }
  144.        if((pcs[i].image = (char far *)malloc ((size_t)f_st.st_size+10))==NULL)  {
  145.            puts ("malloc error "); exit (-1);
  146.            }
  147.        fp = fopen (pcs[i].fname,"rb");
  148.        fread (pcs[i].image,(int)f_st.st_size,1,fp);
  149.        fclose (fp);
  150.        }
  151.    return 0;
  152.    }
  153.