处理了边界问题

This commit is contained in:
james 2024-08-04 18:45:11 +08:00
parent 6b1aae99a2
commit 5943e3bd2b
1 changed files with 9 additions and 5 deletions

View File

@ -26,6 +26,7 @@ void snake_entry(void *parameter)
int snake_list[SNAKE_MAX][2] = {0};
int snake_direction[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}}; // 上,左,下,右
char snake_dirshow[4][7] = {"upup", "left", "down", "rigt"};
char tmp[10];
int snake_head = 2, snake_tail = 0, former_head; // 蛇头,蛇尾
int now_direction = 3; // 当前方向
snake_list[1][0] = SNAKE_MAX / 2;
@ -46,14 +47,17 @@ void snake_entry(void *parameter)
new_direction = rand() % 3;
now_direction = (now_direction+3+new_direction)%4;//防止反向,走回头路
lcd_show_string(20, 20, 16,snake_dirshow[now_direction]);
rt_thread_mdelay(1000);
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);
former_head = snake_head;
snake_head = (snake_head + 1) % (SNAKE_MAX);
snake_tail = (snake_tail + 1) % (SNAKE_MAX);
snake_list[snake_head][0] = (snake_list[former_head][0] + snake_direction[now_direction][0]) % (SNAKE_MAX);
snake_list[snake_head][1] = (snake_list[former_head][1] + snake_direction[now_direction][1]) % (SNAKE_MAX);
snake_address(snake_list[snake_head][0], snake_list[snake_head][1], SNAKE_SIZE, BLACK);
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);
sprintf(tmp,"(%d,%d)", 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+16*4, 20, 16,tmp);
rt_thread_mdelay(1000);
}
}