自己看吧
2023-08-02 23:11:52
发布于:浙江
#include<iostream>
#include<string>
#include<windows.h>
#include<conio.h>
using namespace std;
int main() {
int player = 1; //定义一个玩家,当1时为白方,2时为黑方
//................................棋盘1..............................................
int qiPan[19][19]; //1.声明一个19行19列的数组来存储棋盘 1
for (int h = 0; h < 19; h++) { //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
for (int l = 0; l < 19; l++) {
qiPan[h][l] = 0; //对当前元素进行初始化(赋值),默认为0值
}
}
//...............................棋盘2................................................
int qiPanTwo[19][19]; //声明一个19行19列的数组来存储棋盘 2
for (int h = 0; h < 19; h++) { //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
for (int l = 0; l < 19; l++) {
qiPanTwo[h][l] = 0; //对当前元素进行初始化(赋值),默认为0值
}
}
//...............................光标声明.............................................
int X = 9; //2.声明并初始化光标的横纵坐标
int Y = 9;
qiPan[9][9] = 8;
//..............................显示...................................................
cout<<"wsad上下左右,y确定落子\n";
for (int h = 0; h < 19; h++) {
for (int l = 0; l < 19; l++) {
if (qiPan[h][l] == 8) {
cout << "㊣";
} else if (qiPanTwo[h][l] == 0) {
cout << "·";
} else if (qiPanTwo[h][l] == 1) {
cout << "●";
} else if (qiPanTwo[h][l] == 2) {
cout << "○";
}
}
cout << endl;
}
//..............................输入控制...............................................
while (true) {
char xx = getch(); //控制台从键盘获得一个字符
switch (xx) { //控制
case 'w': //上
Y = Y - 1; //使光标纵坐标-1
qiPan[Y][X] = 8; //讲光标写入棋盘
qiPan[Y + 1][X] = 0; //使原本位置的值还原
break;
case 's': //下
Y = Y + 1;
qiPan[Y][X] = 8;
qiPan[Y - 1][X] = 0;
break;
case 'a': //左
X = X - 1;
qiPan[Y][X] = 8;
qiPan[Y][X + 1] = 0;
break;
case 'd': //右
X = X + 1;
qiPan[Y][X] = 8;
qiPan[Y][X - 1] = 0;
break;
case 'y': //落子
if (player == 1) { //如果当前玩家为白色方时
qiPanTwo[Y][X] = 1; //通过棋盘1中的光标位置更改棋盘2中对应元素的值为1,也就是白棋落子
player = 2; //白棋落子后更换玩家
} else if (player == 2) {
qiPanTwo[Y][X] = 2;
player = 1;
}
break;
}
//................................清屏操作................................................
system("cls");
cout<<"wsad上下左右,y确定落子\n";
//...............................打印.....................................................
for (int h = 0; h < 19; h++) {
for (int l = 0; l < 19; l++) {
if (qiPan[h][l] == 8) {
cout << "㊣";
} else if (qiPanTwo[h][l] == 0) {
cout << "·";
} else if (qiPanTwo[h][l] == 1) {
cout << "●";
} else if (qiPanTwo[h][l] == 2) {
cout << "○";
}
}
cout << endl;
}
//.........................游戏规则..............................................
int shu = 1, heng = 1, pie = 1, na = 1; //横竖撇捺
for (int i = 1; i <= 4; i++) { //上
if (qiPanTwo[Y + i][X] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
shu++;
else
break;
}
for (int i = 1; i <= 4; i++) { //下
if (qiPanTwo[Y - i][X] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
shu++;
else
break;
}
for (int i = 1; i <= 4; i++) { //左
if (qiPanTwo[Y][X - i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
heng++;
else
break;
}
for (int i = 1; i <= 4; i++) { //右
if (qiPanTwo[Y][X + i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
heng++;
else
break;
}
for (int i = 1; i <= 4; i++) { //左下
if (qiPanTwo[Y + i][X - i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
pie++;
else
break;
}
for (int i = 1; i <= 4; i++) { //右上
if (qiPanTwo[Y - i][X + i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
pie++;
else
break;
}
for (int i = 1; i <= 4; i++) { //右下
if (qiPanTwo[Y + i][X + i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
na++;
else
break;
}
for (int i = 1; i <= 4; i++) { //左上
if (qiPanTwo[Y - i][X - i] == qiPanTwo[Y][X] && qiPanTwo[Y][X] != 0)
na++;
else
break;
}
if (shu == 5 || heng == 5 || pie == 5 || na == 5) {
if (qiPanTwo[Y][X] == 1) {
cout << "白子获胜!";
system("pause");
break;
} else {
cout << "黑子获胜!";
system("pause");
break;
}
}
}
return 0;
}
注:有做改编(自豪)
全部评论 5
van不了诶
2023-08-03 来自 浙江
1可以的呢亲~
2023-08-03 来自 浙江
26
2023-08-03 来自 浙江
1《电商客服》
2023-08-03 来自 浙江
1
您是三体迷啊
2023-08-14 来自 广东
0"给文明以岁月,而不是给岁月以文明"
2023-08-14 来自 广东
0
少了两个大括号 return 0也被吞了(哭)
2023-08-14 来自 四川
0膜拜
2023-08-14 来自 广东
0厉害👍
2023-08-14 来自 广东
0
有帮助,赞一个