这个是大学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;
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?"●":"○");
//让用户输入坐标
//判断坐标是否越界:
//(1)是否越界
//(2)输入坐标是否已经有棋子
//根据坐标和当前的颜色修改CHESS功能
//切换颜色控制变量currentColor
}
}
棋盘代码如下:
#include <stdio.h>
void showChess();
void main()
{
showChess();
}
void showChess()
{
int i,j;
printf(" ");
for(i = 0; i <15; i++)
{
printf("%2d ", i);
}
printf("\n");
j = 0;
i = 0;
printf("%2d",j);
printf("┏");
for(i = 1; i < 14; i++)
{
printf("━");
printf("┳");
}
printf("━");
printf("┓");
printf("\n");
for(j = 1; j < 14; j++)
{
printf(" ");
for(i = 0; i < 15; i++)
{
printf("┃");
printf(" ");
}
printf("\n");
i = 0;
printf("%2d",j);
printf("┣");
for(i = 1; i < 14; i++)
{
printf("━");
printf("╋");
}
printf("━");
printf("┫");
printf("\n");
}
printf(" ");
for(i = 0; i < 15; i++)
{
printf("┃");
printf(" ");
}
printf("\n");
i = 0;
printf("%2d",j);
printf("┗");
for(i = 1; i < 14; i++)
{
printf("━");
printf("┻");
}
printf("━");
printf("┛");
}
最后要进行测试,需要程序运行截图:
黑子:1,2
白子:2,2
黑子:16,1 (越界,输入无效,下次应继续输入黑子)
黑子: 3,3
白子:1,2 (已有棋子,输入无效,下次应继续输入白子)
白子:4,4
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。