13 c++版本的五子棋

前言

呵呵 这大概是 大学里面的 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值