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 ");

}

}