/*海龟图---pen函数用1和2判断笔尖方向,direc函数判断0,1,2,3四个方向*/
#include<stdio.h>
#include<malloc.h>
int a[20][20];
int X=0,Y=0,direc_n=0;
int output(void);
int PEN(int n);
int direc(int n);
int MOVE(int n,int pen,int direc_n);
void main()
{
int N=0,M=0,pen,direc_M;
printf("是否打印(‘6’是):\n");
printf("请输入笔尖方向(‘1’上,‘2’下):\n");
printf("请输入方向(初始为向上,‘3’右,‘4’左:\n");
printf("进行移动('5')\n");
while(N!=9)
{
scanf("%d",&N);
if(N==1||N==2)
{ pen=PEN(N); }
if(N==3||N==4)
{ direc_M=direc(N);}
if(N==5)
{ MOVE(N,pen,direc_M);}
if(N== 6)
{ output();}
if(N==9){ break; }
}
}
int PEN(int n)
{
int i=0;
if(n==1)
{ i=0;return i; }
if(n==2)
{ i=1;return i; }
}
int output(void)
{
int i,j;
a[X][Y]=2;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
if(a[i][j]==0)
printf(" ");
else if(a[i][j]==1)
printf("*");
else if(a[i][j]==2)
printf("#");
}
printf("\n");
}
}
int MOVE(int n,int pen_n,int direc_m)
{
int j=0,m,x,y;
printf("请输入走的步数:\n");
scanf("%d",&m);
if(direc_m==0)
{
if((X-m)<0)
{ printf("超出范围\n");}
else
{ while(j<m-1)
{
a[X][Y]=pen_n;
X--;j++;
}
}
}
else if(direc_m==1)
{
if((Y+m)>=20)
{ printf("超出范围\n");}
else
{ while(j<m-1)
{
a[X][Y]=pen_n;
Y++;j++;
}
}
}
else if(direc_m==2)
{
if((X+m)>=20)
{ printf("超出范围\n");}
else
{ while(j<m-1)
{
a[X][Y]=pen_n;
X++;j++;
}
}
}
else if(direc_m==3)
{
if((y-m)<0)
{ printf("超出范围\n");}
else
{ while(j<m-1)
{
a[X][Y]=pen_n;
Y--;j++;
}
}
}
}
int direc(int n)
{
int direc_m;
if(n==3)
{ direc_n++; }
else if(n==4)
{ direc_n--; }
direc_m=direc_n%4;
return direc_m;