增加食物
This commit is contained in:
parent
5f0093f4e8
commit
50cb05afa8
@ -9,7 +9,7 @@
|
|||||||
#define LCD_MAX 240
|
#define LCD_MAX 240
|
||||||
#define SNAKE_SIZE 20
|
#define SNAKE_SIZE 20
|
||||||
#define SNAKE_MAX LCD_MAX / SNAKE_SIZE
|
#define SNAKE_MAX LCD_MAX / SNAKE_SIZE
|
||||||
rt_atomic_t now_direction=3 ;
|
rt_atomic_t now_direction = 3;
|
||||||
|
|
||||||
// bool snake_table[SNAKE_MAX][SNAKE_MAX] = {0};
|
// bool snake_table[SNAKE_MAX][SNAKE_MAX] = {0};
|
||||||
// struct My_snake
|
// struct My_snake
|
||||||
@ -26,12 +26,14 @@ void snake_entry(void *parameter)
|
|||||||
time_t t;
|
time_t t;
|
||||||
/* 初始化随机数发生器 */
|
/* 初始化随机数发生器 */
|
||||||
srand((unsigned)time(&t));
|
srand((unsigned)time(&t));
|
||||||
int snake_list[SNAKE_MAX][2] = {0};
|
int snake_list[SNAKE_MAX + 1][2] = {0};
|
||||||
int snake_direction[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}}; // 上,左,下,右
|
int snake_direction[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}}; // 上,左,下,右
|
||||||
|
int snake_food[2];
|
||||||
|
bool food_flag = false;
|
||||||
char snake_dirshow[4][7] = {"upup", "left", "down", "rigt"};
|
char snake_dirshow[4][7] = {"upup", "left", "down", "rigt"};
|
||||||
char tmp[10];
|
char tmp[10];
|
||||||
int snake_head = 2, snake_tail = 0, former_head; // 蛇头,蛇尾
|
int snake_head = 2, snake_tail = 0, former_head; // 蛇头,蛇尾
|
||||||
|
int snake_len = 3;
|
||||||
snake_list[1][0] = SNAKE_MAX / 2;
|
snake_list[1][0] = SNAKE_MAX / 2;
|
||||||
snake_list[1][1] = SNAKE_MAX / 2;
|
snake_list[1][1] = SNAKE_MAX / 2;
|
||||||
snake_list[0][0] = snake_list[1][0] - 1;
|
snake_list[0][0] = snake_list[1][0] - 1;
|
||||||
@ -44,26 +46,40 @@ void snake_entry(void *parameter)
|
|||||||
snake_address(snake_list[0][0], snake_list[0][1], SNAKE_SIZE, BLACK);
|
snake_address(snake_list[0][0], snake_list[0][1], SNAKE_SIZE, BLACK);
|
||||||
snake_address(snake_list[1][0], snake_list[1][1], SNAKE_SIZE, BLACK);
|
snake_address(snake_list[1][0], snake_list[1][1], SNAKE_SIZE, BLACK);
|
||||||
snake_address(snake_list[2][0], snake_list[2][1], SNAKE_SIZE, BLACK);
|
snake_address(snake_list[2][0], snake_list[2][1], SNAKE_SIZE, BLACK);
|
||||||
|
snake_food[0] = rand() % SNAKE_MAX;
|
||||||
|
snake_food[1] = rand() % SNAKE_MAX;
|
||||||
|
snake_address(snake_food[0], snake_food[1], SNAKE_SIZE, GREEN);
|
||||||
int new_direction = 0;
|
int new_direction = 0;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
// if(snake)
|
||||||
// new_direction = rand() % 3;
|
// new_direction = rand() % 3;
|
||||||
// now_direction = (now_direction+3+new_direction)%4;//防止反向,走回头路
|
// now_direction = (now_direction+3+new_direction)%4;//防止反向,走回头路
|
||||||
|
|
||||||
former_head = snake_head;
|
former_head = snake_head;
|
||||||
snake_head = (snake_head + 1) % (SNAKE_MAX);
|
snake_head = (snake_head + 1) % (SNAKE_MAX);
|
||||||
|
|
||||||
snake_list[snake_head][0] = (snake_list[former_head][0] + snake_direction[now_direction][0]+SNAKE_MAX) % (SNAKE_MAX);
|
snake_list[snake_head][0] = (snake_list[former_head][0] + snake_direction[now_direction][0] + SNAKE_MAX) % (SNAKE_MAX);
|
||||||
snake_list[snake_head][1] = (snake_list[former_head][1] + snake_direction[now_direction][1]+SNAKE_MAX) % (SNAKE_MAX);
|
snake_list[snake_head][1] = (snake_list[former_head][1] + snake_direction[now_direction][1] + SNAKE_MAX) % (SNAKE_MAX);
|
||||||
|
|
||||||
sprintf(tmp,"(%d,%d)", snake_list[snake_head][0], snake_list[snake_head][1]);
|
sprintf(tmp, "(%d,%d)", snake_list[snake_head][0], snake_list[snake_head][1] && snake_len < SNAKE_MAX - 1);
|
||||||
// rt_kprintf("head:%d,%d\n", snake_list[snake_head][0], snake_list[snake_head][1]);
|
// rt_kprintf("head:%d,%d\n", snake_list[snake_head][0], snake_list[snake_head][1]);
|
||||||
lcd_show_string(20, 20, 16,snake_dirshow[now_direction]);
|
lcd_show_string(20, 20, 16, snake_dirshow[now_direction]);
|
||||||
lcd_show_string(20+16*4, 20, 16,tmp);
|
lcd_show_string(20 + 16 * 4, 20, 16, tmp);
|
||||||
rt_thread_mdelay(500);
|
rt_thread_mdelay(900);
|
||||||
|
|
||||||
snake_address(snake_list[snake_head][0], snake_list[snake_head][1], SNAKE_SIZE, BLACK);
|
snake_address(snake_list[snake_head][0], snake_list[snake_head][1], SNAKE_SIZE, BLACK);
|
||||||
snake_address(snake_list[snake_tail][0], snake_list[snake_tail][1], SNAKE_SIZE, WHITE);
|
if (snake_list[snake_head][0] == snake_food[0] && snake_list[snake_head][1] == snake_food[1])
|
||||||
snake_tail = (snake_tail + 1) % (SNAKE_MAX);
|
{
|
||||||
|
snake_food[0] = rand() % SNAKE_MAX;
|
||||||
|
snake_food[1] = rand() % SNAKE_MAX;
|
||||||
|
snake_address(snake_food[0], snake_food[1], SNAKE_SIZE, GREEN);
|
||||||
|
snake_len++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snake_address(snake_list[snake_tail][0], snake_list[snake_tail][1], SNAKE_SIZE, WHITE);
|
||||||
|
snake_tail = (snake_tail + 1) % (SNAKE_MAX);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user