Changeset ebe70f1 in mainline for uspace/app/tetris/tetris.h
- Timestamp:
- 2009-06-09T11:10:31Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f3afd24
- Parents:
- 080ad7f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/tetris/tetris.h
r080ad7f rebe70f1 37 37 38 38 /** @addtogroup tetris 39 * @{ 39 * @{ 40 40 */ 41 41 /** @file … … 56 56 */ 57 57 58 /* the board */59 #define B_COLS1260 #define B_ROWS2361 #define B_SIZE(B_ROWS * B_COLS)58 /* The board */ 59 #define B_COLS 12 60 #define B_ROWS 23 61 #define B_SIZE (B_ROWS * B_COLS) 62 62 63 typedef unsigned char cell; 64 extern cell board[B_SIZE]; /* 1 => occupied, 0 => empty */ 63 typedef uint32_t cell; 65 64 66 /* the displayed area (rows) */ 67 #define D_FIRST 1 68 #define D_LAST 22 65 extern cell board[B_SIZE]; /* 1 => occupied, 0 => empty */ 69 66 70 /* the active area (rows) */ 71 #define A_FIRST 1 72 #define A_LAST 21 67 /* The displayed area (rows) */ 68 #define D_FIRST 1 69 #define D_LAST 22 70 71 /* The active area (rows) */ 72 #define A_FIRST 1 73 #define A_LAST 21 73 74 74 75 /* 75 76 * Minimum display size. 76 77 */ 77 #define MINROWS2378 #define MINCOLS4078 #define MINROWS 23 79 #define MINCOLS 40 79 80 80 extern int Rows, Cols; /* current screen size */ 81 /* Current screen size */ 82 extern int Rows; 83 extern int Cols; 81 84 82 85 /* … … 84 87 * As with board coordinates, display coordiates are zero origin. 85 88 */ 86 #define RTOD(x)((x) - 1)87 #define CTOD(x)((x) * 2 + (((Cols - 2 * B_COLS) >> 1) - 1))89 #define RTOD(x) ((x) - 1) 90 #define CTOD(x) ((x) * 2 + (((Cols - 2 * B_COLS) >> 1) - 1)) 88 91 89 92 /* … … 91 94 * are 7 basic shapes, each consisting of four `blots': 92 95 * 93 * X.X X.XX.X94 * X.X X.X X.X.X X.X X.X.X X.X.XX.X.X.X95 * X XX96 * X.X X.X X.X 97 * X.X X.X X.X.X X.X X.X.X X.X.X X.X.X.X 98 * X X X 96 99 * 97 * 0 1 2 3 4 56100 * 0 1 2 3 4 5 6 98 101 * 99 102 * Except for 3 and 6, the center of each shape is one of the blots. 100 * This blot is designated (0, 0). The other three blots can then be103 * This blot is designated (0, 0). The other three blots can then be 101 104 * described as offsets from the center. Shape 3 is the same under 102 105 * rotation, so its center is effectively irrelevant; it has been chosen 103 106 * so that it `sticks out' upward and leftward. Except for shape 6, 104 * all the blots are contained in a box going from (-1, -1) to (+1,+1);107 * all the blots are contained in a box going from (-1, -1) to (+1, +1); 105 108 * shape 6's center `wobbles' as it rotates, so that while it `sticks out' 106 109 * rightward, its rotation---a vertical line---`sticks out' downward. 107 * The containment box has to include the offset (2, 0), making the overall108 * containment box range from offset (-1, -1) to (+2,+1). (This is why110 * The containment box has to include the offset (2, 0), making the overall 111 * containment box range from offset (-1, -1) to (+2, +1). (This is why 109 112 * there is only one row above, but two rows below, the display area.) 110 113 * … … 117 120 * these rows move down to make more room. A new random shape is again 118 121 * introduced at the top of the board, and the whole process repeats. 119 * The game ends when the new shape will not fit at (1, 5).122 * The game ends when the new shape will not fit at (1, 5). 120 123 * 121 124 * While the shapes are falling, the user can rotate them counterclockwise … … 129 132 */ 130 133 struct shape { 131 int rot; /* index of rotated version of this shape */ 132 int rotc; /* -- " -- in classic version */ 133 int off[3]; /* offsets to other blots if center is at (0,0) */ 134 int rot; /* index of rotated version of this shape */ 135 int rotc; /* -- " -- in classic version */ 136 int off[3]; /* offsets to other blots if center is at (0,0) */ 137 uint32_t color; 134 138 }; 135 139 … … 149 153 * but by then the game is utterly impossible. 150 154 */ 151 extern long fallrate; /* less than 1 million; smaller => faster */ 152 #define faster() (fallrate -= fallrate / 3000) 155 extern long fallrate; /* less than 1 million; smaller => faster */ 156 157 #define faster() (fallrate -= fallrate / 3000) 153 158 154 159 /* … … 156 161 * and affects scoring. 157 162 */ 158 #define MINLEVEL1159 #define MAXLEVEL9163 #define MINLEVEL 1 164 #define MAXLEVEL 9 160 165 161 166 /* … … 171 176 * If previewing has been turned on, the score is multiplied by PRE_PENALTY. 172 177 */ 173 #define PRE_PENALTY 0.75178 #define PRE_PENALTY 0.75 174 179 175 extern int score; /* the obvious thing */ 176 //extern gid_t gid, egid; 180 extern int score; /* The obvious thing */ 177 181 178 extern char 179 extern int 180 extern int 182 extern char key_msg[100]; 183 extern int showpreview; 184 extern int classic; 181 185 182 intfits_in(const struct shape *, int);183 voidplace(const struct shape *, int, int);184 voidstop(char *);186 extern int fits_in(const struct shape *, int); 187 extern void place(const struct shape *, int, int); 188 extern void stop(char *); 185 189 186 190 /** @} 187 191 */ 188
Note:
See TracChangeset
for help on using the changeset viewer.