黑方使用@符号代表,白方使用 *号代表
. 1 2 3 4 5 6 7 8 9 A B C D E F
1 0 0 0 0 0 @ * 0 0 0 0 0 0 0 0
2 0 0 0 0 0 @ * 0 0 0 0 0 0 0 0
3 0 0 0 0 0 @ * * 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
用户输入走棋行列号如(3,5),表示第3行5列处落子。
建议10以后行列号用A,B,C,D,E,F
轮流下棋,直到输赢或(-1,-1)结束。
1ˎ 问题描述
黑方使用@符号代表,白方使用 *号代表,能实现在棋盘上下棋,获胜,终止等功能。
2ˎ功能要求
用户输入走棋行列号如(3,5),表示第3行5列处落子。轮流下棋,直到输赢或(-1,-1)结束。
3ˎ功能实现
1) 输出棋盘函数
char ch='A';
for (i = 0; i <= N; i++)
{
for (j = 0; j <= N; j++)
{
if (0 == i)
{
for(j=0;j<10;j++)
cout<<setw(2)<<j;
for(j=10;j<=N;j++)
{
cout<<setw(2)<<ch;
ch=(ch+1); }
}
//利用二维数组实现,行标与列标分别用i,j 表示,定义字符ch='A',即当列标j==0输出i,列行标i==0,for(j=0;j<10;j++),输出j; for(j=10;j<=N;j++),ch=(ch+1);依次输出ch。
else if (1 == a[i][j]) cout<<setw(2)<<'@';
else if (2 == a[i][j]) cout<<setw(2)<<'*';
Else cout<<setw(2)<<'.';
落子位置由整个棋盘一个一个判断这个位置是否被重新定义,若被新定义为2,则此位置输出*,若此位置被新定为1,此位置输出@,没有重新定义输出为.。
2)下棋函数
这是一个循环函数,whoTurn为总落子次数初始为零,每落一次子,whoTurn++,由总的落子次数除以2的余数判断该哪位选手落子。
if (1 == whoTurn% 2) cout<<"请第1位选手落子";
else cout<<"请第2位选手落子";
if (1 == a[i][j])
cout<<setw(2)<<'@';
else if (2 == a[i][j])
cout<<setw(2)<<'*';
else cout<<setw(2)<<'.';
//若此位置已被重新定义过,则不能落子,否则将此位置重新定义,第一位选手a[i][j] = 1;第二位选手a[i][j] = 2;
if(i==-1&&j==-1)
{
cout<<"结束!"<<endl;
exit(0);}
若输入为(-1 -1)判断结束整个循环; system(“cls”); 清除内容后重新调用棋盘函数,输出棋盘,调用判断函数;判断之后继续落子,形成循环。