-
Notifications
You must be signed in to change notification settings - Fork 0
/
tetrominoes.h
40 lines (32 loc) · 1.05 KB
/
tetrominoes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "main.h"
#define SHAPE_INDEX(name) ((name == 'O') ? O_SHAPE : (name == 'L') ? L_SHAPE : \
(name == 'J') ? J_SHAPE : (name == 'I') ? I_SHAPE : \
(name == 'S') ? S_SHAPE : (name == 'Z') ? Z_SHAPE : \
(name == 'T') ? T_SHAPE : 0)
#define COLLISION_OTHER_SHAPE(x,y,s) (!is_point_shape(x, y, s) && board[x][y] != '\0')
enum Shapes {O_SHAPE, L_SHAPE, J_SHAPE, I_SHAPE, S_SHAPE, Z_SHAPE, T_SHAPE};
struct shape {
char name;
char structure[4][4];
int color;
int init_position;
};
struct point {
int row;
int col;
};
struct c_shape {
struct shape ishape;
struct point points[4];
int direction; // 0-4
};
int move_down(void);
void move_right(void);
void move_left(void);
int shape_rotate_right(void);
int shape_rotate_left(void);
int point_rotate_right(struct point*, struct point*, int);
int point_rotate_left(struct point*, struct point*, int);
struct point get_origin_point(struct c_shape*);
void drop_shape(void);
int is_point_shape(int, int, struct c_shape*);