自己编的黑白棋程序c++代码
控制台程序
<删除本句话,并将文件后缀改为.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
…… 此处隐藏:1998字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




