Subversion Repositories Code-Repo

Rev

Rev 241 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 241 Rev 278
Line 1... Line 1...
1
#ifndef TRON_H
1
#ifndef TRON_H
2
#define	TRON_H
2
#define	TRON_H
3
 
3
 
4
#include "CUBE.h"
4
#include "CUBE.h"
5
 
5
 
6
#define TRON_PLAYER_1_COLOR    GREEN
6
#define TRON_MAX_PLAYERS    4
7
#define TRON_PLAYER_2_COLOR    PURPLE
-
 
8
#define TRON_PLAYER_1_HEAD     BLUE
7
#define TRON_COLLISION      WHITE
9
#define TRON_PLAYER_2_HEAD     RED
8
#define TRON_COLLISION_2    ORANGE
10
#define TRON_COLLISION         ORANGE
9
#define TRON_DELAY          800
11
 
10
 
12
typedef struct {
11
typedef struct {
13
    unsigned x  :8;
12
    uint8_t x;
14
    unsigned y  :8;
13
    uint8_t y;
15
    unsigned z  :8;
-
 
16
    unsigned    :8;
14
    uint8_t z;
17
} TRON_POINT;
15
} TRON_POINT;
18
 
16
 
19
typedef union {
-
 
20
    struct {
-
 
21
        unsigned up         :1;
-
 
22
        unsigned down       :1;
-
 
23
        unsigned right      :1;
-
 
24
        unsigned forward    :1;
-
 
25
        unsigned left       :1;
-
 
26
        unsigned backward   :1;
-
 
27
        unsigned            :2;
-
 
28
    };
-
 
29
    uint8_t value;
-
 
30
} TRON_P1_DIRECTION;
-
 
31
 
-
 
32
typedef union {
-
 
33
    struct {
-
 
34
        unsigned up         :1;
-
 
35
        unsigned down       :1;
-
 
36
        unsigned left       :1;
-
 
37
        unsigned backward   :1;
-
 
38
        unsigned right      :1;
-
 
39
        unsigned forward    :1;
-
 
40
        unsigned            :2;
-
 
41
    };
-
 
42
    uint8_t value;
-
 
43
} TRON_P2_DIRECTION;
-
 
44
 
-
 
45
typedef struct {
17
typedef struct {
-
 
18
    uint8_t Color_Head_R[TRON_MAX_PLAYERS];
-
 
19
    uint8_t Color_Head_G[TRON_MAX_PLAYERS];
-
 
20
    uint8_t Color_Head_B[TRON_MAX_PLAYERS];
-
 
21
 
46
    TRON_POINT p1_body[CUBE_PIXELS];
22
    uint8_t Color_Body_R[TRON_MAX_PLAYERS];
47
    TRON_POINT p1_direction;
23
    uint8_t Color_Body_G[TRON_MAX_PLAYERS];
48
    uint8_t p1_last_direction;
24
    uint8_t Color_Body_B[TRON_MAX_PLAYERS];
49
 
25
 
50
    TRON_POINT p2_body[CUBE_PIXELS];
26
    TRON_POINT body[TRON_MAX_PLAYERS][CUBE_PIXELS];
51
    TRON_POINT p2_direction;
27
    TRON_POINT direction[TRON_MAX_PLAYERS];
52
    uint8_t p2_last_direction;
28
    uint8_t last_direction[TRON_MAX_PLAYERS];
-
 
29
    uint8_t dead[TRON_MAX_PLAYERS];
-
 
30
    uint32_t length[TRON_MAX_PLAYERS];
53
    
31
 
54
    uint32_t length;
32
    uint8_t players;
-
 
33
    uint8_t players_alive;
55
    uint32_t delay;
34
    uint32_t delay;
56
} TRON_DATA;
35
} TRON_DATA;
57
 
36
 
58
void Tron_Init(TRON_DATA *data);
37
void Tron_Init(TRON_DATA *data);
59
void Tron_Main(void);
38
void Tron_Main(void);
60
void Tron_Update_Direction(uint8_t p1, uint8_t p2);
39
void Tron_Update_Direction(uint8_t controller, CTRL_BTN_STATUS value);
61
void Tron_Update_Frame(void);
40
void Tron_Update_Frame(void);
62
 
41
 
63
#endif	/* TRON_H */
42
#endif	/* TRON_H */
64
 
43