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

📄 lianliankan.java

📁 本次project实现如下功能: 写了一个本地的多线程游戏服务器ThreadeEchoServer
💻 JAVA
字号:
import java.awt.*; 
import java.awt.event.*; 

public class lianliankan implements ActionListener 
{ 
	static String s="no"; 				//用来纪录点击按钮的信息 
	int x0=0,y0=0,x=0,y=0,n1=0,n2=0; 	//用来纪录按钮的位置信息 
	Frame f,f1; 
	Button but[]=new Button[30];		//创建足够数量的按钮
	Button b,ba,bc,br,bt1,bt2; 		
	Panel p1,p2,p3; 
	TextField t; 			//用来显示一些随机信息,方法是下面的guli(). 
	Label l; 

	int d[][]={ 			//用来和界面的按钮建立映射关系 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0}, 
	{0,0,0,0,0,0,0} 
	}; 


	//测试用主函数
	public static void main(String[] args) 		
	{ 
		lianliankan llk=new lianliankan(); 
		llk.suiji(); 	
		llk.go(); 
	} 
	
	//再来一次按钮的响应事件。 
	public void actionPerformed(ActionEvent e) 
	{ 
	    int d[][]={ 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0}, 
	    {0,0,0,0,0,0,0} 
	    }; 
	    
	    this.d=d; 
	    suiji();
	    f.setVisible(false); 
	    f1.setVisible(false); 
	    s="no"; 	    
	    go(); 	
	} 


//初始化界面,开始游戏 
	public void go()						
	{ 
		int i,j;
		l=new Label("亲爱的玩家,"); 
		f=new Frame("连连看"); 
		t=new TextField(); 
		p2=new Panel(); 
		p1=new Panel(); 
		p3=new Panel(); 
		bc=new Button("退出"); 
		br=new Button("重列"); 
		b=new Button(); 
		
		for(i = 1;i<=6;i++)
			{
				for(j=1;j<=5;j++)
					
						but[i*5+j-6]=new Button(String.valueOf(d[i][j]));						
			}	
		

		p3.setLayout(null); 
		p1.setSize(250,300); 
		p2.setSize(100,40); 
		p3.setSize(300,30); 
		t.setSize(60,30); 
		l.setSize(70,30); 
		p1.setLayout(new GridLayout(6,5)); 
		p1.setBackground(Color.pink); 
		p1.setLocation(100,100); 
		p2.setLocation(0,400); 
		p3.setLocation(50,50); 
		t.setLocation(230,2); 
		l.setLocation(150,2); 
		bc.setLocation(0,40); 
		br.setLocation(0,100); 
		f.add(p1); 
		f.add(p2); 
		f.add(p3); 		
		p3.add(l); 
		p3.add(t); 
		p2.add(bc); 
		p2.add(br); 
		
		for(i=0;i<30;i++)
			p1.add(but[i]);
			  
		f.pack(); 
		f.setBounds(280,100,500,450); 
		f.setResizable(false); 
		f.setVisible(true); 
		
		bc.addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ ex(); } }); 
		
		br.addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ chonglie(); } }); 
		
				
		but[0].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(1,1);} }); 
			
			
		but[1].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(1,2); } }); 
		but[2].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(1,3);} }); 
		but[3].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(1,4);}}); 
		but[4].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(1,5);} }); 
		but[5].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(2,1);}}); 
		but[6].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(2,2);}}); 
		but[7].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(2,3);}}); 
		but[8].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(2,4);}}); 
		but[9].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(2,5);}}); 
		but[10].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(3,1);} }); 
		but[11].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(3,2);} }); 
		but[12].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(3,3);}}); 
		but[13].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(3,4);}}); 
		but[14].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(3,5);}}); 
		but[15].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(4,1);}}); 
		but[16].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(4,2);} }); 
		but[17].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(4,3);} }); 
		but[18].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(4,4);}}); 
		but[19].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(4,5);} }); 
		but[20].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(5,1);}}); 
		but[21].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(5,2);} }); 
		but[22].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(5,3);}}); 
		but[23].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(5,4);}}); 
		but[24].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(5,5);} }); 
		but[25].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(6,1);} }); 
		but[26].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(6,2);}}); 
		but[27].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(6,3);}}); 
		but[28].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{wei(6,4);}}); 
		but[29].addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
		{ wei(6,5);} }); 	
				

} 


	//退出界面
	public void ex() 
	{ 
		f1=new Frame("选择界面"); 
		f1.setLayout(new GridLayout(1,1)); 
		bt1=new Button("确定退出"); 
		bt2=new Button("再来一局"); 
		f1.add(bt1); 
		f1.add(bt2); 
		f1.pack(); 
		f1.setBounds(400,250,90,60); 
		f1.setResizable(false); 
		f1.show(); 
		f1.setVisible(true); 
		bt1.addMouseListener(new MouseAdapter(){ 
		public void mouseClicked(MouseEvent e) 
				{f1.setVisible(false); 
				f.setVisible(false);} 	}); 
		bt2.addActionListener(this); 
	} 


	//产生随机数,来填充游戏界面对应的数组的各个位置 
	public void suiji() 
	{ 
		int m,n,k=0,k1,k2,k3; 
		
		for(m=1;m<=15;m++) 
		{ 
			k1=(int)(Math.random()*25+1); 
			for(n=1;n<=2;n++) 
			{ 
				k2=(int)(Math.random()*6+1); 
				k3=(int)(Math.random()*5+1); 
				while(d[k2][k3]!=0 && k!=30) 
				{ 
					k2=(int)(Math.random()*6+1); 
					k3=(int)(Math.random()*5+1); 
				} 
				this.d[k2][k3]=k1; 
				k++; 
			} 
		} 
	} 

	//随机的鼓励信息 
	public void guli() 
	{ 
		int l=0; 
		t.setText("好好干哦!"); 
		l=(int)(Math.random()*10); 
		//System.out.println(l); 
		switch(l) 
		{ 
			case 1: t.setText("好!加油!"); break;			
			case 3: t.setText("你真棒!");break; 			
			case 5: t.setText("加快速度!");break;
			case 6:t.setText("不错啊!");break;
			case 8:t.setText("加油吧!");break; 
			case 9:t.setText("够聪明!");break;
			default: break;		
		} 
	} 

	 //重列
	public void chonglie()
	{ 
		int save[],i,j,n=0,k2,k3,k; 
		int d[][]={ 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0}, 
		{0,0,0,0,0,0,0} 
		}; 
		save=new int[30]; 
		for(n=0;n<30;n++) 
			save[n]=0; //定义一个数组来保存当前的每个按钮位置上的信息 
		n=0; 
		
		for(i=0;i<=6;i++) 
			for(j=0;j<=5;j++) 
			{ 
				if(this.d[i][j]!=0) 
				{ 
					save[n]=this.d[i][j]; 
					n++; 
				} 
			} 
			
		n=n-1; 
		this.d=d; 
		
		while(n>=0) //产生随机位置,放置按钮 
		{ 
			k2=(int)(Math.random()*6+1); 
			k3=(int)(Math.random()*5+1); 
			while(d[k2][k3]!=0) 
			{ 
				k2=(int)(Math.random()*6+1); 
				k3=(int)(Math.random()*5+1); 
			} 
			this.d[k2][k3]=save[n]; 
			n--; 
		} 
		
		f.setVisible(false); 
		s="no"; //这里一定要将按钮点击信息归为初始 
		go(); 		
		ling(); 
	} 

	//将数组中为零的成员对应的按钮消去 
	public void ling() 
	{ 
		int i,j;
		for(i = 1;i<=6;i++)
		{
			for(j=1;j<=5;j++)
			{
				if(d[i][j]==0)
				{
					but[i*5+j-6].setVisible(false);
					//System.out.println(but[i*5+j-6]);					
				}
			}		
		}
	} 


	//判断并纪录每次点击按钮的信息 
	public void wei(int w1,int w2) 
		{ //当两次的按钮相同才能消去 
		if((s.trim()).equals("no")) 
		{ 
			s="yes";		 
			x0=w1;y0=w2; 
			n1=d[x0][y0]; 
			b=but[w1*5+w2-6]; 
			x=w1;y=w2; 
			n2=d[x][y]; 
			ba=but[w1*5+w2-6]; 
		} 
		
		else 
		{ 		
			x0=x; 	y0=y; 
			n1=d[x0][y0]; 
			b=ba; 
			x=w1; y=w2; 
			n2=d[x][y]; 
			ba=but[w1*5+w2-6]; 
			if(n1==n2 && ba!=b) 
			{ 	xiao(); 	} 
		} 
	} 
	
	private void forxiao()
	{
		b.setVisible(false); 
		ba.setVisible(false); 
		guli(); 
		s="no"; 
		d[x0][y0]=0; 
		d[x][y]=0; 
	}
	

	//这里是整个游戏最重要的部分,就是判断两个按钮在信息 
	//相同的情况下能不能消去。仔细分析,不一条条注释 
	public void xiao() 
	{ 
	int i=0, j=0,n=0,k=0; 
	if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))) //相邻的情况 
	{ 	forxiao();	} 
	else 
	{ 
		for (j=0;j<7;j++ ) //两个按钮按行分析,看能否消去 
	{ 
	if (d[x0][j]==0) 
	{ 
	if (y>j) 
	{ 
	
	for (i=y-1;i>=j;i-- ) 
	{ 
	if (d[x][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=1; 
	} 
	} 
	if (k==1) 
	{ 
	if (y0>j) 
	{ 
	for (i=y0-1;i>=j ;i-- ) 
	{ 
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (y0<j) 
	{ 
	for (i=y0+1;i<=j ;i++) 
	{ 
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	} 
	} 
	if (y<j) 
	{ 
	
	
	for (i=y+1;i<=j ;i++ ) 
	{ 
	
	if (d[x][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=1; 
	} 
	} 
	if (k==1) 
	{ 
	if (y0>j) 
	{ 
	for (i=y0-1;i>=j ;i-- ) 
	{ 
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (y0<j) 
	{ 
	for (i=y0+1;i<=j ;i++) 
	{ 
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	} 
	} 
	if (y==j ) 
	{ 
	if (y0>j) 
	{ 
	for (i=y0-1;i>=j ;i-- ) 
	{ 
	
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (y0<j) 
	{ 
	for (i=y0+1;i<=j ;i++) 
	{ 
	if (d[x0][i]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	} 
	} 
	if (k==2) 
	{ if (x0==x) 
	{	forxiao();	} 
	if (x0<x) 
	{ 
	for (n=x0;n<=x-1;n++ ) 
	{ 
	if (d[n][j]!=0) 
	{ 
	k=0; 
	break; 
	} 
	if(d[n][j]==0 && n==x-1) 
	{ 	forxiao();	} 
	} 
	} 
	if (x0>x) 
	{ 
	for (n=x0;n>=x+1 ;n-- ) 
	{ 
	if (d[n][j]!=0) 
	{ 
	k=0; 
	break; 
	} 
	if(d[n][j]==0 && n==x+1) 
	{forxiao();} 
	} 
	} 
	} 
	} 
	
	for (i=0;i<8;i++ ) //按列分析,看能不能消去 
	{ 
	if (d[i][y0]==0) 
	{ 
	if (x>i) 
	{ 
	
	for (j=x-1;j>=i ;j-- ) 
	{ 
	if (d[j][y]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=1; 
	} 
	} 
	
	
	if (k==1) 
	{ 
	if (x0>i) 
	{ 
	for (j=x0-1;j>=i ;j-- ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (x0<i) 
	{ 
	for (j=x0+1;j<=i;j++ ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	} 
	} 
	if (x<i) 
	{ 
	
	for (j=x+1;j<=i;j++ ) 
	{ 
	if (d[j][y]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=1; 
	} 
	} 
	if (k==1) 
	{ 
	if (x0>i) 
	{ 
	for (j=x0-1;j>=i ;j-- ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (x0<i) 
	{ 
	for (j=x0+1;j<=i ;j++ ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	} 
	} 
	if (x==i) 
	{ 
	
	
	if (x0>i) 
	{ 
	for (j=x0-1;j>=i ;j-- ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	if (x0<i) 
	{ 
	for (j=x0+1;j<=i ;j++ ) 
	{ 
	if (d[j][y0]!=0) 
	{ 
	k=0; 
	break; 
	} 
	else 
	{ 
	k=2; 
	} 
	} 
	} 
	
	} 
	} 
	if (k==2) 
	{ 
	if (y0==y) 
	{forxiao();} 
	if (y0<y) 
	{ 
	for (n=y0;n<=y-1 ;n++ ) 
	{ 
	if (d[i][n]!=0) 
	{ 
	k=0; 
	break; 
	} 
	if(d[i][n]==0 && n==y-1) 
	{ forxiao();} 
	} 
	} 
	if (y0>y) 
	{ 
	for (n=y0;n>=y+1 ;n--) 
	{ 
	if (d[i][n]!=0) 
	{ 
	k=0; 
	break; 
	} 
	if(d[i][n]==0 && n==y+1) 
	{ forxiao();} 
	} 
	} 
	} 
	} 
		
	} 
	}


} 

⌨️ 快捷键说明

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