home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume11 / pc-xbd / part02 / xbd.h < prev   
C/C++ Source or Header  |  1990-12-17  |  4KB  |  155 lines

  1. /*********************************************/
  2. /* you just keep on pushing my luck over the */
  3. /*           BOULDER        DASH             */
  4. /*                                           */
  5. /*     Jeroen Houttuin, ETH Zurich, 1990     */
  6. /*********************************************/
  7.  
  8. #define w 35
  9. #define h 26
  10. #define LEVELPREFIX "xbdlv"
  11.  
  12. #define SCORESIZE 18
  13. #define LIB        "c:\\usr\\local\\games\\xbd"
  14.  
  15. /* direction masks */
  16. #define N 0
  17. #define E 1
  18. #define S 2
  19. #define W 3
  20. #define NODIR 4
  21.  
  22. #define SPACEEXPLO    0
  23. #define BOULDEXPLO    10
  24. #define DIAEXPLO    20
  25. #define PROPAGATED    10
  26.  
  27. #define PLAYER              'p'
  28. #define SPACE               ' '
  29. #define LMONSTER            'l'    /* Right turning monster */
  30. #define RMONSTER            'r'
  31. #define GRASS               'g'
  32. #define WALL                'w'
  33. #define MAGICWALL           'W'    /* Expanding wall */
  34. #define DIAMOND             'd'
  35. #define STEEL               'S'
  36. #define BOULDER             'b'
  37. #define EXPLOSION           'x'
  38. #define EXIT                'E'
  39. #define EATER               'e'
  40. #define NUCBAL              'n'    /* Nuclear ballon */
  41. #define BLOB                'B'    /* lava */
  42. #define TINKLE              't'    /* Tinkle wall */
  43.  
  44. #define NB_EDIT_PGM        16
  45.  
  46. #define K_question        '?'
  47. #define K_slash        '/'
  48.  
  49. #ifndef byte
  50. #define byte unsigned char
  51. #endif
  52.  
  53. #define ALT_SHIFT        8
  54. #define CTL_SHIFT        4
  55. #define LEFT_SHIFT        2
  56. #define RIGHT_SHIFT        1
  57.  
  58. #define K_HOME            71
  59. #define K_END             79
  60. #define K_UP              72
  61. #define K_DOWN            80
  62. #define K_PGUP            73
  63. #define K_PGDOWN          81
  64. #define K_LEFT            75
  65. #define K_RIGHT           77
  66. #define K_INS             82
  67. #define K_DEL             83
  68. #define K_BACKSPACE        8
  69. #define K_RETURN          13
  70. #define K_ESC             27
  71. #define K_SPACE           32
  72.  
  73. #define K_F1              59
  74. #define K_F2              60
  75. #define K_F3              61
  76. #define K_F4              62
  77. #define K_F5              63
  78. #define K_F6              64
  79. #define K_F7              65
  80. #define K_F8              66
  81. #define K_F9              67
  82. #define K_F10             68
  83.  
  84. #define K_C            'C'
  85. #define K_U            'U'
  86. #define K_c            'c'
  87. #define K_u            'u'
  88. #define K_backslash        'b'
  89. #define K_D            'D'
  90. #define K_d            'd'
  91. #define K_R            'R'
  92. #define K_r            'r'
  93.  
  94.  
  95.  
  96. static int  far *kbdStatus   = (int  far *)0x00000417;  /* Etat du clavier */
  97. static byte far *kbdBuffer   = (byte far *)0x00000400;  /* Tampon clavier  */
  98. static int  far *kbdPtrRead  = (int  far *)0x0000041A;  /* Ptr lecture     */
  99. static int  far *kbdPtrWrite = (int  far *)0x0000041C;  /* Ptr criture    */
  100.  
  101.  
  102. #define Bool            enum Boolean
  103. enum Boolean {
  104.     FALSE, TRUE
  105. };
  106.  
  107.  
  108.  
  109. char            *whitegc, *scoregc, *gc, *Bgc, *Bgc1, *Bgc2, *ngc, *egc, 
  110.             *egc1, *egc2, *Egc1, *Wgc, *Wgc2, *Egc2, *Egc, *lgc, *lgc1,
  111.             *lgc2, *rgc, *rgc1, *rgc2, *xgc, *Sgc, *bgc, *dgc, *dgc1, 
  112.             *dgc2, *wgc, *pgc, *pgc1, *pgc2, *sgc, *ggc, *tgc, *tgc1,
  113.                *tgc2, *tgc3;
  114.  
  115. char            filename[300];    /* Current file name of this level */
  116. char            levname[64];    /* Levelname */
  117. int             i, j, ii, jj, jjj;
  118. int             blobbreak;
  119. int             critical;
  120. int             curtime;        /* Current clock tick number */
  121. int             blobcells;
  122. int             tinkdur;    /* Tinkle duration */
  123. Bool            tinkact;    /* Tinkle active   */
  124. Bool            levincreased;
  125. int             x, y, xin, yin, players, lives, levelnum, levelstart, speed,
  126.                 diareq, diapoints, extradiapoints;
  127. Bool            steal;        /* steal instead of go */
  128. Bool            stoplevel, blobcollapse;
  129. enum directs {
  130.     STAND, UP, DOWN, LEFT, RIGHT, KILL
  131. };
  132.  
  133. enum directs    curorder;    /* Current order which player has */
  134. /* typed at the keyboard. */
  135.  
  136. struct cell {
  137.   char            content;
  138.   Bool            changed;    /* has cell changed since last drawing */
  139.   Bool            caught;    /* for BLOB */
  140.   Bool            checked;    /* for BLOB algorithm */
  141.   char            dir;
  142.   short           speed;
  143.   short           stage;    /* painting stage for blinking etc. */
  144. }               field[h][w];
  145.  
  146. Bool            gamestop;
  147. Bool            scoreobs;    /* is score line obsolete ? */
  148. int             levelnum;    /* Current level number */
  149. int             lives;        /* Current number of lives */
  150. int             score;        /* Total score */
  151. int             speed;        /* Speed of game.  1 is slowest, 15 is
  152.                          * default */
  153.  
  154.  
  155.