自己编的黑白棋程序c++代码
更新时间:2023-05-13 17:48:01 阅读量: 实用文档 文档下载
- 黑白棋分拣机程序推荐度:
- 相关推荐
控制台程序
<删除本句话,并将文件后缀改为.cpp>
#include <iostream>
using namespace std;
int qi[8][8];
void print_h(int h)
{
cout << " " << (char)(h+65) << "╟";
for (int k=0; k<8; k++)
{
switch (qi[h][k])
{ case 0: cout << "┼"; break;
case 1: cout << "◎"; break;
case 2: cout << "●"; break;
}
}
cout << "╢" << endl;
}
void print()
{
cout << " 01234567" << endl;
cout << " ╔╤╤╤╤╤╤╤╤╗" << endl;
for (int l=0; l<8; l++)
print_h(l);
cout << " ╚╧╧╧╧╧╧╧╧╝" << endl;
}
void xiugai(int hang, int lie, int heng, int zong, int num)
{
for (int i=1; i<=num; i++)
{
hang+=heng; lie+=zong;
qi[hang][lie]=3-qi[hang][lie];
}
}
int panduan(int count, int shu, int se)
{
int out; // out=0:不继续; out=1:继续; out=2:不继续并返回成功;
if (shu==0) out=0;
else if (shu==(3-se)) out=1;
else if (count==1) out=0;
else out=2;
return out;
}
bool chuli(int se, int i, int j, bool leixing)
{
bool ctrl=false;
int flag=1;
int hang=i; int lie=j;
int count=0;
while (hang>0 && flag==1) // 向上判断
{
hang--;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,-1,0,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (hang<7 && flag==1) // 向下判断
{
hang++;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,1,0,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (lie>0 && flag==1) // 向左判断
{
lie--;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,0,-1,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (lie<7 && flag==1) // 向右判断
{
lie++;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,0,1,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (hang>0 && lie>0 && flag==1) // 向左上判断
{
hang--; lie--;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,-1,-1,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (hang<7 && lie<7 && flag==1) // 向右下判断
{
hang++; lie++;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,1,1,count-1); ctrl=true; }
else ctrl=true;
flag=1;
count=0;
hang=i; lie=j;
while (hang>0 && lie<7 && flag==1) // 向右上判断
{
hang--
; lie++;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,-1,1,count-1); ctrl=true; }
else ctrl=
控制台程序
true;
flag=1;
count=0;
hang=i; lie=j;
while (hang<7 && lie>0 && flag==1) // 向左下判断
{
hang++; lie--;
count++;
flag=panduan(count, qi[hang][lie], se);
}
if (flag==2) if (leixing) { xiugai(i,j,1,-1,count-1); ctrl=true; }
else ctrl=true;
if (ctrl && leixing) qi[i][j]=se;
return ctrl;
}
int main()
{
bool ctrl=false, ctrl_all=false, ctrl_1=false, ctrl_2=false;
int j=0;
int n=1;
int se=2;
char h,l;
int lie, hang;
int count_hei=0; int count_bai=0;
for (int i=0; i<8; i++)
for (j=0; j<8; j++)
qi[i][j]=0;
qi[3][3]=1; qi[4][4]=1; qi[3][4]=2; qi[4][3]=2;
while (n<61)
{
se=3-se;
for (i=0; i<8; i++)
{
for (j=0; j<8; j++)
{
if (qi[i][j]==0)
{
ctrl_1=(ctrl_1 || chuli(1, i, j, false));
if (ctrl_1 && ctrl_2) break;
ctrl_2=(ctrl_2 || chuli(2, i, j, false));
if (ctrl_1 && ctrl_2) break;
}
}
if (ctrl_1 && ctrl_2) break;
}
if (!(ctrl_1 || ctrl_2)) break;
if ((!ctrl_1) && ctrl_2 && (se==1)) continue;
if ((!ctrl_2) && ctrl_1 && (se==2)) continue;
count_hei=0; count_bai=0;
for (i=0; i<8; i++)
for (j=0; j<8; j++)
{
if (qi[i][j]==1) count_hei++;
else if (qi[i][j]==2) count_bai++;
}
print();
cout << " 黑方 " << count_hei << " : " << count_bai << " 白方" << endl;
if (se==1) cout << " 黑方下子" << endl;
else cout << " 白方下子" << endl;
while (!ctrl)
{
cout << " ";
cin >> h >> l;
cout << endl;
hang=h-65; lie=l-48;
if (qi[hang][lie]!=0) ctrl=false;
else ctrl=chuli(se, hang, lie, true);
if (!ctrl) cout << " 此处不能落子!" << endl;
}
ctrl=false; ctrl_1=false; ctrl_2=false;
n++;
}
count_hei=0; count_bai=0;
for (i=0; i<8; i++)
for (j=0; j<8; j++)
{
if (qi[i][j]==1) count_hei++;
else if (qi[i][j]==2) count_bai++;
}
print();
cout << " 黑方 " << count_hei << " : " << count_bai << " 白方" << endl;
if (count_hei>count_bai) cout << " 黑方胜!" << endl;
else if (count_hei<count_bai) cout << " 白方胜!" << endl;
else cout << " 打平了!" << endl;
cout << " 按任意键退出..." << endl;
cin >> i;
return 0;
}
正在阅读:
自己编的黑白棋程序c++代码05-13
总助试用期述职报告【精品】05-05
值得借鉴的考场议论文的写作技法05-20
如果有种永远,是因为太想怀念的微小说11-21
证明材料范文02-10
2017-2022年中国工业除湿机市场专项调研报告(目录) - 图文03-09
木材学复习思考题12-13
9上 Unit1~8单元知识梳理03-09
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 黑白棋
- c++
- 代码
- 程序
- 自己
- 九塘小学减负工作计划
- 化学课外兴趣小组活动计划安排、记录、教案
- 植物学实习报告 王书豪(3)
- 宣汉县审计局向帮扶的贫困村送温暖
- 案例10:上海市浦东区“委托管理”机制转变政府职能
- 2014-2015学年人教版新目标英语八年级下学期期中测试题和答案
- 服装制版基础知识
- B2B电子商务与供应链管理
- 新课堂教学评价标准使用情况及对策
- 汽车工厂设计手册
- 2006年高考化学试题分类汇编
- 高考语文 文言文实词专项复习教案
- 囚徒健身六艺十式图文详解(最终完美修改编)-可直接打印
- 毛概2010年修订版课后习题答案
- 加强青少年社会主义核心价值体系教育论略 2
- 中国工人阶级的来源和特征
- 2010年吉林省针灸推拿三基训练考试重点和考试技巧
- 2012年中考化学复习模拟试题 试卷与答案(5)
- 七年级课外文言文练习
- 日语一级阅读1——5