简单的三子棋代码设计-创新互联
三子棋是一种玩法简单的棋类游戏,对战双方在3x3的棋盘上轮流下棋,先将自己的三颗棋子连成一线的玩家获胜,当棋盘下满还没有玩家获胜,则为平局。
成都创新互联公司服务项目包括灵寿网站建设、灵寿网站制作、灵寿网页制作以及灵寿网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,灵寿网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到灵寿省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!了解三子棋的基本玩法后,我们就可以开始设计代码了。
首先我们需要一个棋盘,一个简单的三行三列二维数组就可以完成棋盘,之后只要将数组内容全部初始化为' ',就完成了棋盘的设计。
有了棋盘,就可以开始下棋了。下棋就是玩家输入坐标,程序就在输入的坐标上打印一个棋子。例如,玩家输入‘1 1’,就将我们的二维数组第一行第一列的内容改为‘ * ’。但是,数组的第一行第一列坐标是‘0 0‘,所以我们还需要对玩家输入的值进行一个‘-1’的操作。
既然要输入坐标,当然就要判断坐标的合法性,如果玩家输入的坐标超出了我们的棋盘,就要提示玩家输入错误,重新输入,如果该位置已经被下过了,也要有对应的提示。每下完一步都要展示棋盘目前的情况,只要再定义一个函数来打印棋盘就可以了。
void show(char qipan[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
int k = 0;
printf(" ");
for (k = 1; k<= row; k++)
{
printf("%d ", k);
}
printf("\n");
for (i = 0; i< row; i++)
{
printf("%d ", i + 1);
for (j = 0; j< col; j++)
{
printf("% c ", qipan[i][j]);
if (j< col - 1)
{
printf("|");
}
}
if (i< row - 1)
{
printf("\n __ __ __ \n");
}
}
printf("\n \n");
}
具体的代码可以这样操作:
void player_move(char qipan[ROW][COL], int row, int col) //row和r表示行,col和c表示列
{
int R = 0;
int C = 0;
scanf("%d%d", &R, &C);
int r = R - 1;
int c = C - 1;
if (R >= 1 && R<= row && C >= 1 && C<= col)
{
if (qipan[r][c] == ' ')
{
qipan[r][c] = '*';
show(qipan, ROW, COL);
}
else
{
printf("该位置已被下,请重新下棋\n");
}
}
else
{
printf("输入错误,请重新下棋\n");
}
}
玩家下完就是电脑下棋,两个玩家下棋和电脑智能下棋的情况暂时先不考虑。
电脑随机下棋就是要随机生成一个坐标,坐标的值自然也要合法,通过rand()% 3,就可以得到0~2的数字,再判定下这个位置是否被下过就完成了电脑下棋的步骤。
void computer_move(char qipan[ROW][COL], int row, int col)
{
int r = 0;
int c = 0;
while (1)
{
r = rand() % 3;
c = rand() % 3;
if (qipan[r][c] == ' ')
{
qipan[r][c] = '#';
show(qipan, ROW, COL);
break;
}
}
}
双方都下完棋之后,就要判定是否分出胜负,分别检查三行、三列以及两条对角线是否有三个相同的、非‘ ’字符就能判断是否有一方获胜,再判断棋盘填满时有没有玩家获胜,就可以知道是否下到了平局。
char a = end(qipan, ROW, COL);
if (a == 'p')
{
printf("平局\n");
break;
}
if (a == '*')
{
printf("玩家胜\n");
break;
}
computer_move(qipan, ROW, COL);
if (a == '#')
{
printf("电脑胜\n");
break;
}
char end(char qipan[ROW][COL], int row, int col)
{
int r = 0;
int c = 0;
int count = 0;
if (qipan[r][c] == qipan[r + 1][c + 1] && qipan[r][c] == qipan[r + 2][c + 2] && qipan[r][c] != ' ')
{
return qipan[r][c];
}
if (qipan[r][c + 2] == qipan[r + 1][c + 1] && qipan[r][c + 2] == qipan[r + 2][c] && qipan[r][c + 2] != ' ')
{
return qipan[r][c + 2];
}
for (r = 0, c = 0; r< row; r++)
{
if (qipan[r][c] == qipan[r][c + 1] && qipan[r][c + 1] == qipan[r][c + 2] && qipan[r][c] != ' ')
{
return qipan[r][c];
}
}
for (r = 0,c = 0; c< col; c++)
{
if (qipan[r][c] == qipan[r + 1][c] && qipan[r + 1][c] == qipan[r + 2][c] && qipan[r][c] != ' ')
{
return qipan[r][c];
}
}
for (r = 0; r< row; r++)
{
for (c = 0; c< col; c++)
{
if (qipan[r][c] == ' ')
count++;
}
}
if (count == 0)
{
return 'p';
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:简单的三子棋代码设计-创新互联
浏览地址:http://hbruida.cn/article/ceigjd.html