C语言对二维数组进行赋值

写了一个五子棋程序15*15的棋盘,下子是用指针输入的,如下
typedef struct//typedef的作用是在C中定义一个结构体类型
{
int iFlag;
char iX;int iY;
}ScmPiece;
ScmPiece *player;
printf("玩家1请下子:");
scanf("%c%d",&player->iX,&player->iY);
现在我想记录每一步的下子坐标,用一个数组char record[225][4]来记录可以吗?要怎么写,或者有什么其他的记录这两个指针坐标 的方法呢?
我的目的是写五子棋的行棋记录

你的意思是你要分别记录玩家1 和 玩家2 的所有的走棋的坐标吗?如果是的话, 可以分别用两个指针数组来表示,不需要用到二维数组。如果是记录整张棋盘的信息, 可以用二维数组。追问

其实我的目的是做行棋记录,但不大清楚该怎么按走子顺序记录每一步下到了哪里,用二维数组又不大清楚该怎么让它等于两个指针,就是每一步的横纵坐标player->iX和player->iY

追答

按照你的思路来, ScmPiece 是玩家每一步下子信息的结构
ScmPiece *playerA[255];
ScmPiece *playerB[255];
int i = 0;
while(1)
{
printf("玩家A下子: \n")
playerA[i] = (ScmPiece *)malloc(sizeof(ScmPiece)); // 指针分配空间
scanf("%c%d", &playerA[i]->iX, &playerA[i]->iY);
printf("玩家B下子: \n")
playerA[i] = (ScmPiece *)malloc(sizeof(ScmPiece)); // 指针分配空间
scanf("%c%d", &playerB[i]->iX, &playerB[i]->iY);
i++; // 结束一轮
...
// 某种退出条件 结束游戏
}

大概就是这样吧, 可能有错误, 欢迎交流

我写过一个象棋的程序, 支持两个玩家联网对战,写得比较烂,也没心思去修改。如果需要的话可以把代码发你。

追问

非常感谢大侠您的帮助,但是我的坐标定义ScmPiece *player,输入用g_ScmGame1.iX(玩家1横坐标),如果用您的方法Who_win与AI都要重写,所以我想能否另辟一数组什么的记录
ScmPiece *player,而不是改输入变量本身类型

追答

你的意思是用g_ScmGame1.iX, g_ScmGame1.iY 来输入玩家1的操作, 然后要把玩家1 和 玩家2 的所有的操作保存起来, 这个意思吗?

追问

温馨提示:答案为网友推荐,仅供参考
相似回答