前言
呵呵 这大概是 大学里面的 c++ 五子棋了吧
有一些 面向对象的理解, 但是不多
这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用
然后 貌似 放在 win10 上面执行 还有一些问题, 渲染的, 应该很好调整
五子棋
#include<Windows.h>
#include<iostream>
#include<ctime>
using namespace std;
#define N 15
void setCursor(int x,int y);
class FIR
{
private:
int tot;
int a[N][N]; //状态矩阵
int attacklevel[N][N]; //攻击优先级
int defenselevel[N][N]; //防御优先级
int max; //攻击优先级+防御优先级的最大值
int maxattack; //最大攻击优先级
int maxdefense; //最大防御优先级
int have41,have42,have32; //人方是否有下一子成五子;电脑方是否有下一子成五子;电脑方是否有下一子成四子;
int r,c,su,sd; //横竖斜捺连续的子数
int power4(int ); //4的N次方(计算优先级)
int spacerow(int ,int ,int ); //横向优先级
int spacecolumn(int ,int ,int ); //竖向优先级
int spaceslopeup(int ,int ,int ); //斜向优先级
int spaceslopedown(int ,int ,int ); //捺向优先级
public:
int steps; //定位光标的”步数“
int x,y; //走子的坐标
FIR()
{
memset(a,0,sizeof(a));
memset(attacklevel,0,sizeof(attacklevel));
memset(defenselevel,0,sizeof(defenselevel));
steps=0;tot=-1;maxattack=0;maxdefense=0;x=0;y=0;
have41=0;have42=0;have32=0;
r=0;c=0;su=0;sd=0;max=0;
}
void setmap(); //打印棋桌
int play(int ,int ,int ); //下子
int check(int ,int ,int ); //检查
void analysis(int ); //分析,优先级,最大功防……
void compute(int ); //计算走子
void print(); //打印状态矩阵
};
int main()
{
FIR fir;
int x,y;
int flag=0,flag2=0;
fir.setmap();
while(true)
{
do{
setCursor(40,fir.steps);
cout<<"player1 :please input x AND y:";
cin>>x>>y;
flag=fir.play(x-1,y-1,1);
if(flag)
{
if(fir.check(x-1,y-1,1))
{ flag2=1;
setCursor(32,fir.steps);
cout<<"congratuations you win !"<<endl;
break;
}
}
}while(flag==0);
if(flag2) break;
setCursor(40,fir.steps);
cout<<"computer :";
fir.analysis(2);
fir.compute(2);
fir.play(fir.x,fir.y,2);
if(fir.check(fir.x,fir.y,2))
{
flag2=1;
setCursor(32,fir.steps);
cout<<"you lost please practice."<<endl;
break;
}
/*
do{
setCursor(0,20+fir.steps);
cout<<"player2 :please input x AND y:";
cin>>x>>y;
flag=fir.play(x,y,2);
if(flag)
{
if(fir.check(x-1,y-1))
{ flag2=1;
setCursor(0,21+fir.steps);
cout<<"congratuations. you win !"<<endl;
break;
}
}
}while(flag==0);
*/
if(flag2) break;
}
setCursor(40,1+fir.steps);
fir.print();
return