Subversion Repositories Code-Repo

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
240 Kevin 1
#ifndef SNAKE_H
2
#define	SNAKE_H
3
 
4
#include "CUBE.h"
5
 
6
#define SNAKE_BODY_COLOR    BLUE
7
#define SNAKE_HEAD_COLOR    RED
8
#define SNAKE_CANDY_COLOR   GREEN
9
 
10
#define SNAKE_LEVEL_STEP    10
11
 
12
typedef struct {
13
    unsigned x  :8;
14
    unsigned y  :8;
15
    unsigned z  :8;
16
    unsigned    :8;
17
} SNAKE_POINT;
18
 
19
typedef union {
20
    struct {
21
        unsigned up         :1;
22
        unsigned down       :1;
23
        unsigned left       :1;
24
        unsigned backward   :1;
25
        unsigned right      :1;
26
        unsigned forward    :1;
27
        unsigned            :2;
28
    };
29
    uint8_t value;
30
} SNAKE_DIRECTION;
31
 
32
typedef struct {
33
    SNAKE_POINT body[CUBE_PIXELS];
34
    SNAKE_POINT direction;
35
    SNAKE_POINT candy_loc;
36
    uint8_t last_direction;
37
    uint32_t pos_head;
38
    uint32_t pos_tail;
39
    uint32_t length;
40
    uint32_t level;
41
    uint32_t delay;
42
} SNAKE_DATA;
43
 
44
void Snake_Init(SNAKE_DATA *data);
45
void Snake_Main(void);
46
void Snake_Update_Direction(uint8_t p1, uint8_t p2);
47
void Snake_Update_Frame(void);
48
SNAKE_POINT Snake_Generate_Candy(void);
49
 
50
#endif	/* SNAKE_H */
51