#define num 3
struct snake{
int x[num];//横坐标
int y[num];//纵坐标
int size;//节数
};
struct food{
int x;//横坐标
int y;//纵坐标
};
struct snake* SNAKE;
struct food* FOOD;
/**********初始化*****************/
void init_snake(){
SNAKE->size = 3;
for(int i=0;i<SNAKE->size;i++){
SNAKE->x[num] = 10+(SNAKE->size)*10;
SNAKE->y[num] = 10;
}
FOOD->y = 50;
FOOD->x = 50;
}
/*******蛇移动**************/
void snake_move(struct key_event *key){
static i = 0;
switch(key->value){
case KEY_UP:
SNAKE->y[0]++;
break;
case KEY_DOWN:
SNAKE->y[0]--;
break;
case KEY_RIGHT:
SNAKE->x[0]++;
break;
case KEY_LEFT:
SNAKE->x[0]--;
break;
case KEY_OK:
i ^= 1;
while(i);
break;
}
/*********每一节移动到他上一节的坐标*************/
for(int i = 1;i<(SNAKE->size-1);i++){
SNAKE->x[SNAKE->size] = SNAKE->x[SNAKE->size -1];
SNAKE->y[SNAKE->size] = SNAKE->y[SNAKE->size -1];
}
}
void eat_food(){
/*************吃到食物即头部坐标与食物坐标重合*********/
if((SNAKE->x[0] == FOOD->x) && (SNAKE->y[0] == FOOD->y)){
SNAKE->size++;
FOOD->x += 1;
FOOD->y += 1;
}
}
int main(){
struct sys_event *event;
init_snake();
while(1){
snake_move(&event->u.key);
eat_food();
}
}