c语言——五子棋求神。该设计是根据输入的坐标打印这些块。我打不出来
魏徵,存储坐标的数组,需要二维数组,否则只能存储一行位置;
初始化棋盘的动作从draw函数中移除,放入main函数中。draw只负责绘制当前棋盘和棋子,初始化棋盘是输入棋盘的大小;
存放棋子的二维数组p需要初始化;
draw绘制棋盘时,需要判断P数组中存储了哪些字符来决定输出什么。
判断棋子超出棋盘范围,只需要检查输入的坐标x和y是否小于棋盘,放入for循环,每次都会执行。
代码已被更改。看一看。
# include & ltstdio.h & gt
#定义?n?20
#定义?x?10
struct?左标
{
int?x;
int?y;
};
struct?左标?魏徵;
夏尔?p[N][N];
int?len
作废?画画?();
作废?主()
{
int?I,j;
int?甲、乙;
memset(p,?0,?N * N);
printf?(“拜托?输入?那个?五_棋的?board \ n ");
scanf?(" %d ",& amplen);
draw();
printf?(“请输入一个坐标:比如?3,4?\ n ");
scanf("%d,%d ",& amp一,& ampb);
如果(a?& gt=?莱恩。||?b?& gt=?len)
Printf("棋盘超出范围\ n ");
for(I = 0;我& ltleni++)
{
for(j = 0;j & ltlenj++)
{
如果?((魏徵[我][j])。x==a)?& amp& amp?(魏徵[i][j].y==b))
{
p[a][b]= ' @ ';
draw();
}
}
}
}
作废?绘制()
{
int?I,j,k;
为了什么?(我?=?0;?我& ltlen?i++)
{
如果(i==0)
printf("%3d ",I);
其他
printf("%2d ",我?);
}
printf(" \ n ");
为了什么?(我?=?0;?我& ltlen?i++)
{
printf?(" %2d ",我?);
为了什么?(k?=?0;?k & lt?len?k++)
{
if(p[i][k]?==?0)
printf?(《十》);
其他
printf?(" %c?",?p[I][k]);
魏徵[i][k]。x = I;
魏徵[i][k]。y = k;
}
printf?(" \ n ");
}
}