学习总结二

这个是我第一个写的稍微复杂点的程序,老鼠走出迷宫,老师在课上对于各个流程分解开来:
走迷宫:
数据分析:

   迷宫:char[10][10];
   有墙‘#’
   有老鼠‘@’
   出口‘ ’
   路‘ ’
   老鼠的坐标:char m_x,m_y;
   出口的坐标:char out_x,out_y;
业务流程:
   显示迷宫:先清理屏幕,再显示迷宫。
#include<stdio.h>
#include<stdlib.h>
#include<getch.h>
#include<stdbool.h>
int main()
{
	char a[10][10]={{'#','#','#','#','#','#','#','#','#','#'},
	               {'#','@','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ','#','#','#','#','#','#','#','#'},
	               {'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
	               {'#','#','#','#','#','#','#','#',' ','#'}};
     char mouse_x=1,mouse_y=1,out_x=9,out_y=8;
	 int key=0;
loop:	 
	 system("clear");
	 for(int i=0;i<10;i++)
	 {
		 for(int j=0;j<10;j++)
			 printf("%c ",a[i][j]);
	     printf("\n");
	 }
	 key=getch();
	 //printf("%c",key);
	 if (183==key)
	 {  
		 if ( a[mouse_x-1][mouse_y]!='#')
          {
		   a[mouse_x][mouse_y]=' ';
		   a[--mouse_x][mouse_y]='@';
	      }
	 }
	 if (184==key)
	 {
		 
		 if ( a[mouse_x+1][mouse_y]!='#')
	      {	 a[mouse_x][mouse_y]=' ';
	  	     a[++mouse_x][mouse_y]='@';
	      }
	 }
	 if (186==key)
	 {
		 if ( a[mouse_x][mouse_y-1]!='#')
		  { 
		   a[mouse_x][mouse_y]=' ';
		   a[mouse_x][--mouse_y]='@';
	      }
	 }
	 if (185==key)
	 {
		 if ( a[mouse_x][mouse_y+1]!='#')
	  	 {    a[mouse_x][mouse_y]=' ';
	     	 a[mouse_x][++mouse_y]='@';	 
	     }
	 }
	 if (mouse_x==out_x &&  mouse_y==out_y)
		 printf("找到出口");
	else goto loop;
}

我一开始便输出一整个迷宫,每一次行走都会刷新一次迷宫,通过上下左右方向键来控制老鼠的行动,每次在行走的时候判定下个即将要走的位置是空或者是墙,如果是墙则返回循环再输入一个方向来行走,直至找到正确的出口。

从现在看来,在做这个程序的时候,有两个缺陷,运行的时候最后找到出口的时候,老鼠的位置还没动就显示走出迷宫,应该在找到迷宫后还要走一格,还有就是用了loop,但是老师上课说过在公司上班不能大多数都不能使用loop,因为可能会造成数据混乱,所有还是用while比较好,将找到入口作为结束的条件,这些都是不足,要加以改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值