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

📄 one.java

📁 JAVA图形界面编程与开发
💻 JAVA
字号:
//One.java

/**其他的几个文件的结构与此文件雷同,只是方块的形状不同,
 **可否向四方移动,旋转的判断函数不同****/
 
//竖线形状

public class One extends Root//第一个方块
{
	private GameTable gTable;//创建游戏框架
	private int x,y;//方块坐上角现在在框架里的位置
	private int direct=1;//第一个角度
	private int[] store;//储存待判断是否可以移动的周围必要的坐标标志

	public One()
	{
		store=new int[15];//15足够大了
	}
	
//************************初始化显示************************	
	public boolean begin()//初始化显示
	{
		//判断用于初始化的坐标是否被占用
		if((gTable.myTable[(gTable.x-1)/2][0]==0)&&(gTable.myTable[(gTable.x-1)/2][1]==0)&&
			(gTable.myTable[(gTable.x-1)/2][2]==0)&&(gTable.myTable[(gTable.x-1)/2][3]==0))
		{
			x=(gTable.x-1)/2;//记录左上角坐标
			y=0;
			gTable.myTable[x][y]=1;//设置占用标志
			gTable.myTable[x][y+1]=1;
			gTable.myTable[x][y+2]=1;
			gTable.myTable[x][y+3]=1;
			return true;
		}
		else
		{
			return false;//初始化失败
		}
	}
//********************判断可否下移***************************
	public boolean down()//向下移动
	{
		switch(direct)//根据角度标志,其他方块有的有2个角度,有的有4个角度
		{
                	case 1:if(y<=gTable.y-5)//是否在边缘
			       {
			       		store[0]=gTable.myTable[x][y+4];//储存待判断坐标
			       		if(isGo(1))//判断是否可移
			       		{
						gTable.myTable[x][y]=0;//将被移动坐标置0
						gTable.myTable[x][y+4]=1;//将目标坐标置1
						y+=1;//坐上角坐标移动
						return true;
			      		 }
			      		 else
			      		 {
						return false;//移动失败
			     		 }
				}
				else
				{
					return false;//移动失败
				}	
			case 2:if(y<=gTable.y-2)//同case 1
				{
			       		store[0]=gTable.myTable[x][y+1];
			       		store[1]=gTable.myTable[x+1][y+1];
                               		store[2]=gTable.myTable[x+2][y+1];
			       		store[3]=gTable.myTable[x+3][y+1];
			       		if(isGo(4))
			       		{
						gTable.myTable[x][y]=0;
				        	gTable.myTable[x+1][y]=0;
						gTable.myTable[x+2][y]=0;
						gTable.myTable[x+3][y]=0;
						gTable.myTable[x][y+1]=1;
						gTable.myTable[x+1][y+1]=1;
						gTable.myTable[x+2][y+1]=1;
						gTable.myTable[x+3][y+1]=1;
						y+=1;
						return true;
			   		}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			default:return false;
		}
	}
//********************判断可否左移***************************
	public boolean left()//同down()
	{
		switch(direct)
		{
			case 1:if(x>=1)
				{
			      	 	store[0]=gTable.myTable[x-1][y];
			       		store[1]=gTable.myTable[x-1][y+1];
			       		store[2]=gTable.myTable[x-1][y+2];
			       		store[3]=gTable.myTable[x-1][y+3];
			       		if(isGo(4))
			       		{
						gTable.myTable[x][y]=0;
						gTable.myTable[x][y+1]=0;
						gTable.myTable[x][y+2]=0;
						gTable.myTable[x][y+3]=0;
						gTable.myTable[x-1][y]=1;
						gTable.myTable[x-1][y+1]=1;
						gTable.myTable[x-1][y+2]=1;
						gTable.myTable[x-1][y+3]=1;
						x-=1;
						return true;
			      		 }
			      		 else
			       		{
						return false;
			     		}
				}
				else
				{
					return false;
				}
			case 2:if(x>=1)
				{
			       		store[0]=gTable.myTable[x-1][y];
			       		if(isGo(1))
			      		 {
						gTable.myTable[x+3][y]=0;
						gTable.myTable[x-1][y]=1;
						x-=1;
						return true;
			   		}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			default:return false;
		}
	}
//********************判断可否右移***************************
	public boolean right()//同down()
	{
		switch(direct)
		{
			case 1:if(x<=gTable.x-2)
				{
			      	 	store[0]=gTable.myTable[x+1][y];
			       		store[1]=gTable.myTable[x+1][y+1];
			       		store[2]=gTable.myTable[x+1][y+2];
			       		store[3]=gTable.myTable[x+1][y+3];
			       		if(isGo(4))
			       		{
						gTable.myTable[x][y]=0;
						gTable.myTable[x][y+1]=0;
						gTable.myTable[x][y+2]=0;
						gTable.myTable[x][y+3]=0;
						gTable.myTable[x+1][y]=1;
						gTable.myTable[x+1][y+1]=1;
						gTable.myTable[x+1][y+2]=1;
						gTable.myTable[x+1][y+3]=1;
						x+=1;
						return true;
			      		 }
			      		 else
			       		{
						return false;
			     		}
				}
				else
				{
					return false;
				}
			case 2:if(x<=gTable.x-5)
				{
			       		store[0]=gTable.myTable[x+4][y];
			       		if(isGo(1))
			      		 {
						gTable.myTable[x][y]=0;
						gTable.myTable[x+4][y]=1;
						x+=1;
						return true;
			   		}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			default:return false;
		}
	}
//********************判断可否旋转***************************
	public boolean change()//同down()
	{
		switch(direct)
		{
			case 1:if(x<=gTable.x-4)
				{
			      	 	store[0]=gTable.myTable[x+1][y];
			       		store[1]=gTable.myTable[x+1][y+1];
			       		store[2]=gTable.myTable[x+1][y+2];
			       		store[3]=gTable.myTable[x+1][y+3];
				    	store[4]=gTable.myTable[x+2][y];
					    store[5]=gTable.myTable[x+2][y+1];
					    store[6]=gTable.myTable[x+2][y+2];
					    store[7]=gTable.myTable[x+2][y+3];
					    store[8]=gTable.myTable[x+3][y];
					    store[9]=gTable.myTable[x+3][y+1];
					    store[10]=gTable.myTable[x+3][y+2];
					    store[11]=gTable.myTable[x+3][y+3];
			       		if(isGo(12))
			       		{
						gTable.myTable[x][y]=0;
						gTable.myTable[x][y+1]=0;
						gTable.myTable[x][y+2]=0;
						gTable.myTable[x+1][y+3]=1;
						gTable.myTable[x+2][y+3]=1;
						gTable.myTable[x+3][y+3]=1;
						y+=3;
						direct=2;
						return true;
			      		 }
			      		 else
			       		{
						return false;
			     		}
				}
				else
				{
					return false;
				}
			case 2:if(true)
				{
			       		store[0]=gTable.myTable[x][y-1];
			       		store[1]=gTable.myTable[x][y-2];
			       		store[2]=gTable.myTable[x][y-3];
			       		store[3]=gTable.myTable[x+1][y-1];
					store[4]=gTable.myTable[x+1][y-2];
					store[5]=gTable.myTable[x+1][y-3];
					store[6]=gTable.myTable[x+2][y-1];
					store[7]=gTable.myTable[x+2][y-2];
					store[8]=gTable.myTable[x+2][y-3];
					store[9]=gTable.myTable[x+3][y-1];
					store[10]=gTable.myTable[x+3][y-2];
					store[11]=gTable.myTable[x+3][y-3];
			       		if(isGo(12))
			      		 {
						gTable.myTable[x+1][y]=0;
						gTable.myTable[x+2][y]=0;
						gTable.myTable[x+3][y]=0;
						gTable.myTable[x][y-3]=1;
						gTable.myTable[x][y-2]=1;
						gTable.myTable[x][y-1]=1;
						y-=3;
						direct=1;
						return true;
			   		}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			default:return false;
		}
	}
//********************加速下移***************************
	public void downTo()//直下到底
	{
		boolean canDown=true;
		while(canDown)
		{
			canDown=down();//循环向下移动一行
		}
	}

//判断移动是否失败的函数
	public boolean isGo(int n)
	{
		for(int i=0;i<=(n-1);i++)
		{
			if(store[i]!=0)//如果有占位则失败
				return false;
		}
		return true;
	}

	public static void main(String args[])
	{
		new One();
	}
}

⌨️ 快捷键说明

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