⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iswon.java

📁 java开发的五子棋游戏
💻 JAVA
字号:
//////////////////////////////////////////////////////
//
//ChessPoint.java
//
//Created by Guanyi-Zhao
//////////////////////////////////////////////////////
//Readyme:
//         这是判断输赢类
//这个类中用到二进制运算,用1来标识棋点上有棋子,0来标识棋点上没有棋子
//用二进制来减少循环次数,提高了运行的效率

public class IsWon
{
	int []a;  //存放棋盘的列,a[1]存放第一行的棋子,a[2]存放第二行的棋子...a[15]存放第15行的棋子。
	
	//构造方法,使数组a[]实例化,并且置初始值为零,即棋盘上没有棋子。
	public IsWon(int i)
	{
		a=new int[i+1];
		int j;
		for(j=0;j<=15;j++)
		a[j]=0;
	}
	
	//行有五个棋子连在一起,即...11111...形式的二进制数
	public int row(int n)
	{
		int f;
		f=(1<<n)+(1<<(n+1))+(1<<(n+2))+(1<<(n+3))+(1<<(n+4));
		return(f);
	}
	
	//判断行是否满足五连珠
	public boolean rowWon()
	{
		int i=0,j=0,flag=0;
		for(i=1;i<=15;i++)       //从1到15逐行判断是否有五连珠出现
		{
			for(j=1;j<=11;j++)
			{
				if((a[i]&row(j))==row(j))
				flag++;             //flag为标识五连珠出现的变量
			}
		}
		if(flag!=0) return true;          //有五连珠出现则返回真,否则为假
		else return false;
	}
	
	//判断列是否满足五连珠
	public boolean lineWon()
	{
		int i=0,j=0,flag=0;
		for(j=1;j<=15;j++)                //从1到15逐列判断是否有五连珠出现
		{
			for(i=1;i<=11;i++)
			{
				if(((a[i]&(1<<j))==(1<<j))&&((a[i+1]&(1<<j))==(1<<j))&&((a[i+2]&(1<<j))==(1<<j))
				  &&((a[i+3]&(1<<j))==(1<<j))&&((a[i+4]&(1<<j))==(1<<j)))
				flag++;
			}
		}
		if(flag!=0) return true;           //有五连珠出现则返回真,否则为假
		else return false;
	}
	
	//判断正对角线是否满足五连珠          
	public boolean diag1()
	{
		int i=0,j=0,flag=0;             //i、j、为控制循环的变量,flag为标识五连珠出现的变量
		for(i=1;i<=11;i++)
		for(j=1;j<=11;j++)             
		{
			//正对角线有五连珠出现的条件
			if((a[i]&(1<<j))==(1<<j)&&(a[i+1]&(1<<(j+1)))==(1<<(j+1))
			  &&(a[i+2]&(1<<(j+2)))==(1<<(j+2))&&(a[i+3]&(1<<(j+3)))==(1<<(j+3))
			  &&(a[i+4]&(1<<(j+4)))==(1<<(j+4)))
			  flag++;			 
		}
		if(flag!=0) return true;            //有五连珠出现则返回真,否则为假
		else return false;
	}
	
	//判断反对角线是否满足五连珠条件
	public boolean diag2()
	{
		int i=0,j=0,flag=0;
		for(i=1;i<=11;i++)
		for(j=15;j>=5;j--)
		{
			//反对角线有五连珠出现的条件
			if((a[i]&(1<<j))==(1<<j)&&(a[i+1]&(1<<(j-1)))==(1<<(j-1))
			  &&(a[i+2]&(1<<(j-2)))==(1<<(j-2))&&(a[i+3]&(1<<(j-3)))==(1<<(j-3))
			  &&(a[i+4]&(1<<(j-4)))==(1<<(j-4)))
			  flag++;
		}
		if(flag!=0) return true;                 //有五连珠出现则返回真,否则为假
		else return false;
	}
	
	//整体综合判断是否有五连珠出现
	public boolean isWon()
	{
		if(rowWon()||lineWon()||diag1()||diag2())  //这里用||运算符,有短路规则,进一步减少电脑的计算次数
		  return true;                              //提高程序的执行效率
		else return false;                          //整个棋盘上有五连珠出现则返回真,否则为假
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -