📄 lostway.c
字号:
addy=2;
chang_map_point(point_x,point_y+1,WAY);
}
else
{
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
}
break;}
case UP_LEFT: //仅有上左方向可走,随机选择一个方向
{if(rand()%2)
{
addy=2;
chang_map_point(point_x,point_y+1,WAY);
}
else
{
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
}
break;}
case UP_RIGHT: //仅有上右方向可走,随机选择一个方向
{if(rand()%2)
{
addy=2;
chang_map_point(point_x,point_y+1,WAY);
}
else
{
addx=2;
chang_map_point(point_x+1,point_y,WAY);
}
break;}
case DOWN_LEFT: //仅有下左方向可走,随机选择一个方向
{if(rand()%2)
{
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
}
else
{
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
}
break;}
case DOWN_RIGHT: //仅有下右方向可走,随机选择一个方向
{if(rand()%2)
{
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
}
else
{
addx=2;
chang_map_point(point_x+1,point_y,WAY);
}
break;}
case LEFT_RIGHT: //仅有左右方向可走,随机选择一个方向
{if(rand()%2)
{
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
}
else
{
addx=2;
chang_map_point(point_x+1,point_y,WAY);
}
break;}
case UP_DOWN_LEFT: //有上下左方向可走,随机选择一个方向
{switch(rand()%3)
{
case 0:
addy=2;
chang_map_point(point_x,point_y+1,WAY);
break;
case 1:
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
break;
case 2:
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
break;
default:
break;
}
break;}
case UP_DOWN_RIGHT: //有上下右方向可走,随机选择一个方向
{switch(rand()%3)
{
case 0:
addy=2;
chang_map_point(point_x,point_y+1,WAY);
break;
case 1:
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
break;
case 2:
addx=2;
chang_map_point(point_x+1,point_y,WAY);
break;
default:
break;
}
break;}
case UP_LEFT_RIGHT: //有上左右方向可走,随机选择一个方向
{switch(rand()%3)
{
case 0:
addy=2;
chang_map_point(point_x,point_y+1,WAY);
break;
case 1:
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
break;
case 2:
addx=2;
chang_map_point(point_x+1,point_y,WAY);
break;
default:
break;
}
break;}
case DOWN_LEFT_RIGHT://有下左右方向可走,随机选择一个方向
{switch(rand()%3)
{
case 0:
addy=-2;
chang_map_point(point_x,point_y-1,WAY);
break;
case 1:
addx=-2;
chang_map_point(point_x-1,point_y,WAY);
break;
case 2:
addx=2;
chang_map_point(point_x+1,point_y,WAY);
break;
default:
break;
}
break;}
default:
break;
}
cur_map_x=point_x+addx;cur_map_y=point_y+addy; //送下一个点,准备走下一个枝
}
//返回值低四位 高到低为 上下左右 的情况 1为不能走
uint8_t get_staute(uint8_t point_x,uint8_t point_y) //获得该点四周是否可以联通 返回值
{
int1_t fi_up,fi_down,fi_left,fi_right;
fi_up=fi_down=fi_left=fi_right=0; //初始化方向状态
if((!get_map_point(point_x-1,point_y))||point_x==1)fi_left=1; //判断左边是否已经有枝过来||是否为左边缘
if((!get_map_point(point_x,point_y-1))||point_y==1)fi_down=1; //判断下边是否已经有枝过来||是否为下边缘
if((!get_map_point(point_x+1,point_y))||point_x==MAP_X_X-3)fi_right=1; //判断右边是否已经有枝过来||是否为右边缘
if((!get_map_point(point_x,point_y+1))||point_y==MAP_Y-3)fi_up=1; //判断上边是否已经有枝过来||是否为上边缘
if((!get_map_point(point_x+2+1,point_y))&&(!fi_right))fi_right=1; //判断右边点的右
if((!get_map_point(point_x+2,point_y-1))&&(!fi_right))fi_right=1; //判断右边点的下
if((!get_map_point(point_x+2,point_y+1))&&(!fi_right))fi_right=1; //判断右边点的上
if((!get_map_point(point_x-2-1,point_y))&&(!fi_left))fi_left=1; //判断左边点的左
if((!get_map_point(point_x-2,point_y-1))&&(!fi_left))fi_left=1; //判断左边点的下
if((!get_map_point(point_x-2,point_y+1))&&(!fi_left))fi_left=1; //判断左边点的上
if((!get_map_point(point_x,point_y+2+1))&&(!fi_up))fi_up=1; //判断上边点的上
if((!get_map_point(point_x-1,point_y+2))&&(!fi_up))fi_up=1; //判断上边点的左
if((!get_map_point(point_x+1,point_y+2))&&(!fi_up))fi_up=1; //判断上边点的右
if((!get_map_point(point_x,point_y-2-1))&&(!fi_down))fi_down=1; //判断下边点的下
if((!get_map_point(point_x-1,point_y-2))&&(!fi_down))fi_down=1; //判断下边点的左
if((!get_map_point(point_x+1,point_y-2))&&(!fi_down))fi_down=1; //判断下边点的右
return 8*fi_up+4*fi_down+2*fi_left+fi_right; //返回状态 1为不可走,编码顺序是0x0000上下左右B
}
void find_end(void)
{
uint8_t i;
for(i=MAP_X_X-8;i<MAP_X_X-2;i++) //上边缘是否有一个方向过来的点
if(get_map_point(i-1,MAP_Y-3)&&get_map_point(i+1,MAP_Y-3)&&(!get_map_point(i,MAP_Y-4))){end_x=i;end_y=MAP_Y-3;chang_map_point(end_x,end_y+1,WAY);return;}
for(i=MAP_Y-8;i<MAP_Y-2;i++) //右边缘是否有一个方向过来的点
if(get_map_point(MAP_X_X-3,i)&&get_map_point(MAP_X_X-3,i-1)&&(!get_map_point(MAP_X_X-3,i+1))){end_x=MAP_X_X-3;end_y=i;chang_map_point(end_x+1,end_y,WAY);return;}
//若上下边缘都没有,则到这里,将终点定为右上角
end_x=MAP_X_X-3;end_y=MAP_Y-3;chang_map_point(end_x,end_y+1,WAY);return;
}
/*
void lostway_key(void)
{
uint8_t i;
switch(keywords)
{
case UP://MAP_Y-3=29
for(i=16;i<32;i++)displaybuffer_16mux16[i-16]=full_map[2][i]+256*full_map[3][i];
display_16mux16();
break;
case DOWN :
for(i=16;i<32;i++)displaybuffer_16mux16[i-16]=full_map[0][i]+256*full_map[1][i];
display_16mux16();
break;
case LEFT:
for(i=0;i<16;i++)displaybuffer_16mux16[i]=full_map[0][i]+256*full_map[1][i];
display_16mux16();
break;
case RIGHT:
for(i=0;i<16;i++)displaybuffer_16mux16[i]=full_map[2][i]+256*full_map[3][i];
display_16mux16();
break;
case OK:
for(i=16;i<32;i++)displaybuffer_16mux16[i-16]=full_map[2][i]+256*full_map[3][i];
display_16mux16();
break;
default:
break;
}
keywords=rand();
display_LED_total_NO(total_NO);//显示分数
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -