69,381
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
char state = 'a';
int i=0,j=0,xstate=0,Dstate[1][2]={{0,1}};
int floor[50][50]={0};
int direction( int m1);
int move(int n1,int x1);
int print(void);
int main()
{
int x,m,n,wind=1;
int i1=0,j1=0;
for(i1=0;i1<25;i1++)
{for(j1=0;j1<50;j1++)
{
printf("%d",floor[i1][j1]=0);
}
printf("\n");
}//将floor这个数组的前25*50都置为0
while (wind!=0) /*当wind为0时退出*/
{
printf("\ninput the comand:");
scanf("%d",&m);
switch (m){
case 1: /*判断是否为输入状态参数*/
xstate = 0;
break;
case 2:
xstate = 1;
break;
case 3:
direction(m);
break; /*判断选取数组a中的元素*/
case 4:
direction(m);
break;
case 5:
case 10:
printf("\nplease input the distance:");
scanf("%d",&n);
move(n,xstate);
break; /*用数组a中的返回值,对数组floor进行操作*/
case 6:
print();
break; /*打印floor数组*/
case 9:
wind = 0;
break; /*退出程序标志*/
}
}
system("pause");
return 0;
}
int direction(int m1)
{
if (m1 == 3){
switch (state){
case 'a':
Dstate[0][0] = 1;
Dstate[0][1] = 0;
state = 'd';
break;
case 'b':
Dstate[0][0] = -1;
Dstate[0][1] = 0;
state = 'c';
break;
case 'c':
Dstate[0][0] = 0;
Dstate[0][1] = 1;
state = 'a';
break;
case 'd':
Dstate[0][0] = 0;
Dstate[0][1] = -1;
state = 'b';
break;
}
}
else if(m1 == 4)
{
switch (state){
case 'a':
Dstate[0][0] = -1;
Dstate[0][1] = 0;
state = 'c';
break;
case 'b':
Dstate[0][0] = 1;
Dstate[0][1] = 0;
state = 'd';
break;
case 'c':
Dstate[0][0] = 0;
Dstate[0][1] = -1;
state = 'b';
break;
case 'd':
Dstate[0][0] = 0;
Dstate[0][1] = 1;
state = 'a';
break;
}
}
return 0;
}
int move (int n1,int x1)
{
while(n1>0)
{ i = i+ Dstate[0][0];
j = j+ Dstate[0][1];
floor[i][j] = x1;
n1--;
}
return 0;
}
int print(void)
{ int i1=0,j1=0;
for(i1=0;i1<50;i1++)
{for(j1=0;j1<50;j1++)
{ if (floor[i1][j1] == 1)
printf("%c",'*');
else
printf("%d",floor[i1][j1]=0);
}
printf("\n");
}
return 0;
}