home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume15 / gtetris / part01 / tetris.h < prev   
C/C++ Source or Header  |  1993-01-27  |  5KB  |  205 lines

  1. /*
  2. # GENERIC X-WINDOW-BASED TETRIS
  3. #
  4. #    tetris.h
  5. #
  6. ###
  7. #
  8. #  Copyright (C) 1992    Qiang Alex Zhao
  9. #            Computer Science Dept, University of Arizona
  10. #            azhao@cs.arizona.edu
  11. #
  12. #            All Rights Reserved
  13. #
  14. #  Permission to use, copy, modify, and distribute this software and
  15. #  its documentation for any purpose and without fee is hereby granted,
  16. #  provided that the above copyright notice appear in all copies and
  17. #  that both that copyright notice and this permission notice appear in
  18. #  supporting documentation, and that the name of the author not be
  19. #  used in advertising or publicity pertaining to distribution of the
  20. #  software without specific, written prior permission.
  21. #
  22. #  This program is distributed in the hope that it will be "playable",
  23. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  25. #
  26. */
  27.  
  28. /*
  29.  * Common defs
  30.  */
  31.  
  32. #include    <stdio.h>
  33. #include    <sys/types.h>
  34. #include    <sys/errno.h>
  35. #include    <sys/file.h>
  36. #include    <string.h>
  37. #include    <pwd.h>
  38.  
  39. #ifdef    HPUX
  40. #include    <time.h>
  41. #define    random()    lrand48()
  42. #define    srandom(x)    srand48(x)
  43. #else
  44. #include    <sys/time.h>
  45. #endif
  46.  
  47. #include    <X11/Xlib.h>
  48. #include    <X11/Xutil.h>
  49. #include    <X11/cursorfont.h>
  50. #include    <X11/keysym.h>
  51.  
  52. #define    assert(E)    if (E); else fprintf(stderr,"Assertion failed, line %d, fill %s\n", __LINE__, __FILE__),exit(0)
  53.  
  54. /*
  55.  * Tetris defs
  56.  */
  57.  
  58. /* score file */
  59. #ifndef    SCOREFILE
  60. #define SCOREFILE    "/usr/games/.tetris.scores"
  61. #endif
  62.  
  63. /* Maximum # of scores allowed per person */
  64. #ifndef    MAXSCORES
  65. #define MAXSCORES 3
  66. #endif
  67.  
  68. /* number of scores shown */
  69. #ifndef    SHOWNSCORES
  70. #define    SHOWNSCORES    15
  71. #endif
  72.  
  73. /* fonts */
  74. #define TITLE_FONT      "-*-new century schoolbook-bold-r-*-*-24-*-*-*-*-*-*-*"
  75. #define SCORE_FONT      "-*-times-bold-r-*-*-12-*-*-*-*-*-*-*"
  76.  
  77. /****************************/
  78.  
  79. #define    NAMELEN        12
  80.  
  81. #define NUM_BITMAPS    (sizeof (bitmap_data) / sizeof (bitmap_data[0]))
  82.  
  83. #define eq(a, b)    (!strcmp((a), (b)))
  84.  
  85. #define DEF_WIDTH    10
  86. #define DEF_HEIGHT    20
  87.  
  88. #define BOX_HEIGHT    30
  89. #define BOX_WIDTH    30
  90.  
  91. #define BOX_SPACE    1
  92.  
  93. #define X_MARGIN    1
  94. #define Y_MARGIN    1
  95.  
  96. #define THING_SIZE    4
  97.  
  98. #define BASE_XPOS    100
  99. #define BASE_YPOS    100
  100.  
  101. #define BORDER_WIDTH    3
  102.  
  103. #define TITLE_HEIGHT    40
  104.  
  105. #define NUM_FLASHES    15
  106.  
  107. #define SCORE_XPOS1    130
  108. #define SCORE_XPOS2    230
  109. #define SCORE_YPOS1    18
  110. #define SCORE_YPOS2    32
  111.  
  112. #define BG_COLOR    "lightyellow"
  113. #define BD_COLOR    "darkgreen"
  114. #define TITLE_COLOR    "blue"
  115. #define TEXT_COLOR    "red"
  116.  
  117. typedef struct score_s {
  118.     char            myname[NAMELEN], myhost[NAMELEN], mytime[27];
  119.     char            score[10];
  120.     char            level[4];
  121.     char            lines[5];
  122. }               score_t;
  123. #define SCORELEN    sizeof(score_t)
  124.  
  125. typedef struct pattern_s {
  126.     int             whichbitmap;
  127.     char           *fgname, *bgname;
  128.     XColor          fg, bg;
  129.     Pixmap          pixmap;
  130. }               pattern_t;
  131.  
  132. typedef enum {
  133.     NONE, LEFT, RIGHT, ROTATE, DROP
  134. }               command_t;
  135.  
  136. typedef struct field_s {
  137.     Window          frame;
  138.     Window          title;
  139.     Window          win;
  140.     XFontStruct    *tfont;
  141.     XFontStruct    *sfont;
  142.     int           **full;
  143.     int             height, width;
  144.     int             winheight, winwidth;
  145.     long            score;
  146.     int             level;
  147.     int             lines;
  148. }               field_t;
  149.  
  150. typedef struct thing_s {
  151.     int             map[THING_SIZE][THING_SIZE];
  152.     int             xpos, ypos;
  153.     int             size;
  154.     int             probability;
  155. }               thing_t;
  156.  
  157. #define    DIE_MESG    "GAME OVER"
  158. #define    PAUSED_MESG    "PAUSED"
  159.  
  160. #define ytr(y)        (field->winheight - (y))
  161.  
  162. #define NUM_LEVELS    12
  163.  
  164. #define INF        10000000
  165.  
  166. #define MILLION        1000000
  167.  
  168. extern XColor   bgcolor, bdcolor, titlecolor, textcolor;
  169.  
  170. extern Bool     atBottom();
  171. extern Bool     overlapping();
  172. extern Bool     tryMove();
  173. extern field_t *initField();
  174. extern int      checkLine();
  175. extern int      putBoxes();
  176. extern long     time();
  177. extern thing_t *makeNewThing();
  178. extern void    Usage();
  179. extern void     addHighScore();
  180. extern void     banner();
  181. extern void     die();
  182. extern void     doBox();
  183. extern void     drawField();
  184. extern void     drawThing();
  185. extern void     drawThingDiff();
  186. extern void     fallDown();
  187. extern void     handleEvents();
  188. extern void     initPixmaps();
  189. extern void     moveOne();
  190. extern void     normTimeVal();
  191. extern void     rotateThing();
  192. extern void     showHighScores();
  193. extern void     updateScore();
  194.  
  195. extern Display *disp;
  196. extern Window   win;
  197. extern XGCValues gcv;
  198. extern XGCValues text;
  199. extern GC       gc_w;
  200. extern GC       gc_w2;
  201. extern GC       gc_t;
  202. extern GC       gc_wtx;
  203. extern GC       gc_ttx;
  204.  
  205.