这个是大学C语言程序设计课程的一个任务,要求用C语言写五子棋棋子输入到棋盘的代码(棋盘大小15*15),主要用到数组,函数,循环控制结构的知识。题目要求为:
(1)在main函数定义二维数组char CHESS[15][15],循环初始化为全0,该数组用于保存整个棋盘的棋子信息。并作为showChess()的参数用于显示棋盘界面。main函数里进行棋子坐标的输入,根据输入的坐标修改CHESS[15][15]二维数组的内容。
(2)为了让输出界面可以更新棋盘界面,需要使用无限循环令程序不会结束,每次循环之前需要调用system("cls")清空屏幕,然后再次调用showChess()显示新的界面。注意使用system("cls")时,需要#include<windows.h>。
(3)每次循环显示棋盘界面后,都使用让用户输入一个棋子坐标,每次输入后要切换棋子颜色。例如设置一个变量currentColor(该值为1表示输入黑子,为-1表示输入白子),当每次成功输入棋子后currentColor的值应切换到另一种颜色。
(4)并不是每次输入坐标都可以成功输入棋子,需要进行坐标是否合理的判断,例如判断坐标是否越界(<0或>14),以及输入的坐标是否已经有棋子。坐标不合理则不能修改CHESS[15][15]数组内容,并且颜色不改变,继续让用户输入。
代码模板如下:
#include <stdio.h>
#include <windows.h>
void showChess( char chess[15][15]);
void main()
{
char CHESS[15][15];
int j,i;
char currentColor = 1;//颜色控制变量
for(j = 0; j < 15; j++)
for(i = 0; i < 15; i++)
CHESS[j][i] = 0;
while(1)
{
system("cls");
showChess(CHESS);
printf("\n\n请输入%s的坐标(行,列):",currentcolor >0?"●":"○");
//让用户输入坐标
//判断坐标是否合法:
//(1)是否越界
//(2)输入坐标是否已经有棋子
//根据坐标和当前的颜色修改CHESS内容
//切换颜色控制变量currentColor
最后需要连续输入以下坐标进行测试,需要程序运行截图
黑子:1,2
白子:2,2
黑子:16,1 (提示越界,输入无效)
黑子: 3,3
白子:1,2 (提示已有棋子,输入无效)
白子:4,4
C语言写五子棋棋子输入到棋盘的代码,参考代码
https://blog.csdn.net/qq_52145272/article/details/120378297
你题目的解答代码如下:
#include <stdio.h>
#include <windows.h>
void showChess( char chess[15][15]);
void main()
{
char CHESS[15][15];
int j,i;
int x,y;
char currentColor = 1;//颜色控制变量
for(j = 0; j < 15; j++)
for(i = 0; i < 15; i++)
CHESS[j][i] = 0;
while(1)
{
system("cls");
showChess(CHESS);
printf("\n\n请输入%s的坐标(行,列):",currentColor>0?"●":"○");
//让用户输入坐标
scanf("%d%d", &y, &x);
//判断坐标是否合法:
//(1)是否越界
if (y<0 || y>14 || x<0 || x>14)
{
continue;
}
//(2)输入坐标是否已经有棋子
if (CHESS[y][x]!=0)
{
continue;
}
//根据坐标和当前的颜色修改CHESS内容
CHESS[y][x] = currentColor>0?1:2;
//切换颜色控制变量currentColor
currentColor = !currentColor;
}
}
void showChess( char chess[15][15])
{
int j,i;
for(j = 0; j < 15; j++){
for(i = 0; i < 15; i++)
{
if (chess[j][i]==1)
printf("●");
else if (chess[j][i]==2)
printf("○");
else
printf("·");
}
printf("\n");
}
}
如有帮助,望采纳!谢谢!