home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume19 / xtmines / part02 / xtmines.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-28  |  5.9 KB  |  211 lines

  1. /* xtmines: game where you try to cross a minefield */
  2. /* Written by Timothy Tsai  April 13, 1992 */
  3.  
  4. #define LAST_MOD_DATE        "June 19, 1992"
  5. #define MAJOR_VERSION_NUM    1
  6. #define MINOR_VERSION_NUM    2
  7.  
  8. #include <stdio.h>
  9. #include <X11/Xlib.h>
  10. #define XK_MISCELLANY
  11. #include <X11/keysymdef.h>
  12. #include "patchlevel.h"
  13. /* bitmaps */
  14. #include "safe.bm"
  15. #include "man.bm"
  16. #include "bomb.bm"
  17. #include "tstone.bm"
  18. #include "goal.bm"
  19. #include "trail.bm"
  20. #include "pow.bm"
  21. #include "bombmark.bm"
  22. #include "safewrong.bm"
  23. #include "bombmarkwrong.bm"
  24.  
  25. #define FALSE        0
  26. #define TRUE        1
  27.  
  28. #define NUMROWS                25
  29. #define NUMCOLS                40
  30. #define BOMB_EXPLODE_UDELAY        10000
  31. #define XPENDING_UDELAY            50000
  32. #define SECONDS_PER_LEVEL        (5*60)
  33. #define NUM_GRENADES_AT_START        3
  34. #define    POINTS_PER_GRENADE        100
  35. #define POINTS_PER_TOMBSTONE        200
  36. #define POINTS_FOR_USED_SHOWFIG        50
  37. #define PERCENT_FOR_USED_SANITY        1
  38. #define PERCENT_FOR_USED_EAUTOMARK    10
  39. #define GRENADE_DISTANCE        5
  40. #define STARTING_NUM_LIVES        3
  41. #define LOWEST_LEVEL_FOR_REWARD        lieutenant
  42. #define LOWEST_SCORE_FOR_REWARD        3000
  43. #define MAXLIVES            6
  44.  
  45. #define MAXSTRLEN    200
  46. #define BUTTON1        1    /* use mouse button 1 */
  47. #define BUTTON2        2    /* use mouse button 2 */
  48. #define BUTTON3        3    /* use mouse button 3 */
  49. /* status font */
  50. #define FONTS        "*courier-bold-r-normal--24*"
  51. /* main font */
  52. #define FONTM        "*courier-bold-r-normal--14*"
  53. /* time font */
  54. #define FONTT        "*courier-bold-r-normal--18*"
  55. #define def_fh        NUMROWS*(man_height+1)
  56.                     /* field height */
  57. #define    def_bw        4           /* border width for all windows */
  58. #define    def_x        0               /* frame x */
  59. #define    def_y        0           /*       y */
  60. #define    def_w        2*def_bw + NUMCOLS*(man_width+1)
  61.                     /*       width */
  62. #define    def_h        def_fh+140     /*       height */
  63.  
  64. extern int    bw;    /* border width for all windows */
  65. extern int    x;    /* frame x */
  66. extern int    y;    /*       y */
  67. extern int    w;    /*       width */
  68. extern int    h;    /*       height */
  69. extern int    fh;    /* field height */
  70.  
  71. extern int    finished;
  72. extern int    dead;
  73.  
  74. #define SUCCESS            0
  75. #define OUT_OF_RANGE        1
  76. #define NO_MARK_TO_REMOVE    2
  77. #define CANT_MARK        3
  78. #define TIME_IS_OVER        TRUE
  79. #define NO_GRENADES_LEFT    4
  80. #define TOO_FAR_TO_TOSS_GRENADE    5
  81. #define ILLEGAL_POSITION    6
  82. #define SQUARE_IS_UNSAFE    7
  83. #define CANT_EXPLODE        8
  84. #define DIED            9
  85. #define ILLEGAL_ARGUMENT    10
  86. #define NOX            11
  87. #define DOX            12
  88. #define CHECK_FAILED        13
  89.  
  90. typedef enum {bombs_left,bonus_wind,time_left,score, grenades_left,rank,
  91.         lives_left,
  92.         automark_wind,giveup_wind,tgrenade_wind,show_wind,quit_wind,
  93.         refresh_wind,eautomark_wind,sanitycheck_wind,pause_wind,
  94.         status} windtype;
  95. #define NUM1WINDS    6    /* num of winds per row */
  96. #define    NUMWINDS    17    /* tot num of winds */
  97. typedef enum {grunt,corporal,lieutenant,captain,mmajor,general,president,
  98.         king,emperor,angel,god} ranktype;
  99. #define NUMRANKS        10    /* doesn't include god */
  100. #define HIGHEST_PLAYABLE_RANK    angel
  101. #define DEF_LEVEL    grunt
  102. extern ranktype    level;
  103. extern ranktype start_level;
  104. extern int num_bombs_at_start[NUMRANKS];
  105. extern int num_bonus;
  106.  
  107. extern int    num_bombs_left;
  108. extern int    num_time_left;        /* num of seconds */
  109. extern int    num_time_left_at_start;    /* num of seconds */
  110. extern long    time_at_start_of_level;
  111. extern int    num_score;
  112. extern int    num_grenades_left;
  113. extern int    num_tombstones;
  114. extern int    num_lives;
  115. extern int    automark;
  116. extern int    extended_automark;
  117. extern int    sanity;
  118. #define MIN_EXTENDED_MARK_LEVEL        lieutenant
  119. extern int    pause_time;
  120.  
  121. extern Display        *disp;
  122. extern Window        root,frame,field,wind[NUMWINDS];
  123. extern int        screen,depth;
  124. extern Visual        *visual;
  125. extern unsigned long    white,black;
  126. extern Font        fonts,fontm,fontt;
  127. extern XFontStruct    *fontsstruct,*fontmstruct,*fonttstruct;
  128. extern int        fontsw,fontsh,fontsa,
  129.             fontshoww,fontshowh,fontshowa,
  130.             fontmw,fontmh,fontma,
  131.             fonttw,fontth,fontta;
  132.  
  133. #define font_color    0
  134. #define background_color 1
  135. #define field_color    2
  136. #define NUMCOLORS    3
  137. #define FONTCOLOR    "black"
  138. #define BACKGROUNDCOLOR    "white"
  139. #define FIELDCOLOR    "black"
  140. extern XColor        color[NUMCOLORS];
  141. extern GC        gcs,gcm,gct;
  142. extern Colormap    cmap;
  143.  
  144. typedef enum {bm_empty,bm_safe,bm_man,bm_bomb,bm_tombstone,bm_goal,
  145.         bm_trail,bm_pow,bm_bombmark,bm_safewrong,bm_bombmarkwrong} 
  146.         bmtype;
  147. #define NUMBITMAPS    11
  148. typedef enum {fc_empty,fc_trail,fc_man,fc_bomb,fc_tombstone,
  149.         fc_goal} fieldcont;
  150. typedef enum {fm_nomark,fm_safe,fm_bomb} fieldmark;
  151. typedef struct {
  152.         fieldcont    c;
  153.         fieldmark    m;
  154.         int        done;    /* used for mark_allaround_ok() */
  155.     } fieldstruct;
  156. extern fieldstruct FIELD[NUMCOLS][NUMROWS];
  157. typedef enum {sh_man,sh_fig} showtype;
  158. #define DEF_SHOW    sh_fig
  159. extern showtype show;
  160. extern int used_showfig;    /* boolean: used showfig on present level? */
  161. extern int used_sanity;        /* boolean: used sanity on present level? */
  162. extern int used_eautomark;    /* boolean: used eautomark on present level? */
  163. extern Pixmap bitmap[NUMBITMAPS];
  164. extern int bmwidth[NUMBITMAPS];
  165. extern int bmheight[NUMBITMAPS];
  166.  
  167. extern int manvx,manvy;        /* current virtual man position */
  168.  
  169. extern void open_display();
  170. extern void load_fonts();
  171. extern void create_map_frame();
  172. extern void create_GC_colormap();
  173. extern void set_event_masks();
  174. extern void init_values();
  175. extern int illegal_bomb_position();
  176. extern void set_field();
  177.  
  178. /* This is a kludge for system without usleep() */
  179. #ifdef NOUSLEEP
  180. extern void usleep();
  181. #endif
  182. extern void PrintStr();
  183. extern void InvPrintStr();
  184. extern void WindPrint();
  185. extern char *num_rank_to_words();
  186. extern char *clock_time_str();
  187. extern void print_display();
  188. extern void draw();
  189. extern void clear();
  190. extern void draw_field();
  191. extern void refresh();
  192. extern int setxy();
  193. extern int setvxvy();
  194. extern int bomb_status();
  195. extern void show_bomb_status();
  196. extern void show_all_bombs();
  197. extern void do_promotion();
  198. extern int move_man();
  199. extern int remove_mark();
  200. extern int mark_ok();
  201. extern int mark_allaround_ok();
  202. extern int mark_bomb();
  203. extern void die();
  204. extern int current_bonus();
  205. extern int explode();
  206. extern void uptdate_time();
  207. extern int throw_grenade();
  208. extern int update_time();
  209. extern int do_sanity_check();
  210. extern int do_pause();
  211.