⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lostway.c

📁 单片机控制实现几个小游戏:贪吃蛇、俄罗斯方块、推箱子
💻 C
📖 第 1 页 / 共 2 页
字号:
			   			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 + -