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

📄 gameframe.java

📁 一个JAVA写的连连看游戏,非常不错,是学习JAVA的好资料,值得下载
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
								try
								{
									DataInputStream record_in=new DataInputStream(new FileInputStream(MyFile[level]));
									for (int j=0;j<10;j++)
									{	
										record_name[j]=record_in.readUTF();
										record_time[j]=record_in.readUTF();																								
									}
									record_in.close();
								}
								catch(IOException ioe){
									Log.debug("Read record error!",ioe);
								}
								TextField getname=new TextField("",10);
								int xxx=-1;
								for (int i=0;i<10;i++)
								{
									if (ctime.compareTo(record_time[i])<0)
									{
										MegDlg=new Dialog(this,"记录",true);
										Panel p3=new Panel();
										Panel p4=new Panel();										
										p3.setLayout(new FlowLayout());
										p3.add(new Label("恭喜您创下新的记录!!!"));
										p3.add(new Label("请输入您的姓名:"));
										p3.add(getname);
										p4.add(btnY);										
										MegDlg.add("Center",p3);
										MegDlg.add("South",p4);
										MegDlg.setBounds(350,200,200,150);
										MegDlg.setResizable(false);
										MegDlg.show();
										xxx=i;
										break;
									}
								}
								if (xxx!=-1)
								{
									for (int i=8;i>=xxx;i--)
									{
										record_name[i+1]=record_name[i];
										record_time[i+1]=record_time[i];
									}
									record_time[xxx]=ctime;
									record_name[xxx]=getname.getText();
								}
								try
								{
									DataOutputStream record_out=new DataOutputStream(new FileOutputStream(MyFile[level]));
									for (int i=0;i<10;i++)
									{
										record_out.writeUTF(record_name[i]);
										record_out.writeUTF(record_time[i]);
									}
									record_out.close();
								}
								catch(IOException ioe){
									Log.debug("write new record error!",ioe);
								}

							}
							else
							{
								while(!check())
								{
									wash();
								}
							}
						}
						else
						{
							btn[first_i*gridsize_j+first_j].setBackground(Color.lightGray);
							first_i=second_i;
							first_j=second_j;
							btn[first_i*gridsize_j+first_j].setBackground(Color.red);
						}
					}
					else
					{
						btn[first_i*gridsize_j+first_j].setBackground(Color.lightGray);
						first_i=second_i;
						first_j=second_j;
						btn[first_i*gridsize_j+first_j].setBackground(Color.red);
					}
				}
			}
		}
	}
	
	public boolean search()//判断是否有通路
	{
		int small_i,small_j,big_i,big_j;
		small_i=first_button_i;
		small_j=first_button_j;
		big_i=second_button_i;
		big_j=second_button_j;//循环变量
		boolean change_check_i,change_check_j;//检查是否交换
		int change1_i,change1_j,change2_i,change2_j;
		
		if (first_button_i>second_button_i)
		{
			big_i=first_button_i;
			small_i=second_button_i;
			change_check_j=true;
		}
		else change_check_j=false;
		if (first_button_j>second_button_j)
		{
			big_j=first_button_j;
			small_j=second_button_j;
			change_check_i=true;
		}
		else change_check_i=false;
		if (change_check_i) 
		{
			change1_i=second_button_i;
			change2_i=first_button_i;
		}
		else 
		{
			change1_i=first_button_i;
			change2_i=second_button_i;
		}
		if (change_check_j) 
		{
			change1_j=second_button_j;
			change2_j=first_button_j;
		}
		else 
		{
			change1_j=first_button_j;
			change2_j=second_button_j;
		}
		for (int j=0;j<gridsize_j;j++)
		{
			record_flag=true;
			for (int i=small_i+1;i<big_i;i++)
			{
				if (button_flag[i*gridsize_j+j]==1)
				{
					record_flag=false;
					break;
				}
			}
			if (record_flag)
			{
				record1_i=small_i;
				record1_j=j;
				record2_i=big_i;
				record2_j=j;
				if (change_check_j)
				{
					record1_i=big_i;
					record2_i=small_i;
				}
				record1_j=j;
				record2_i=big_i;
				record2_j=j;
				if (j<small_j)
				{
					for (int m=j;m<=small_j;m++)
					{
						if (button_flag[change1_i*gridsize_j+m]==1)
						{
							record_flag=false;
							break;
						}
					}
					if (record_flag)
					{
						for (int m=j;m<=big_j;m++)
						{
							if (button_flag[change2_i*gridsize_j+m]==1)
							{
								record_flag=false;
								break;
							}
						}
					}
				}
				else if (j<big_j)
				{
					for (int m=small_j;m<=j;m++)
					{
						if (button_flag[change1_i*gridsize_j+m]==1)
						{
							record_flag=false;
							break;
						}
					}
					if (record_flag)
					{
						for (int m=j;m<=big_j;m++)
						{
							if (button_flag[change2_i*gridsize_j+m]==1)
							{
								record_flag=false;
								break;
							}
						}
					}
				}
				else
				{
					for (int m=small_j;m<=j;m++)
					{
						if (button_flag[change1_i*gridsize_j+m]==1)
						{
							record_flag=false;
							break;
						}
					}
					if (record_flag)
					{
						for (int m=big_j;m<=j;m++)
						{
							if (button_flag[change2_i*gridsize_j+m]==1)
							{
								record_flag=false;
								break;
							}
						}
					}
				}
			}
			if (record_flag) break;
		}
		if (!record_flag)
		{
			for (int i=0;i<gridsize_i;i++)
			{
				flag=true;
				for (int j=small_j+1;j<big_j;j++)
				{
					if (button_flag[i*gridsize_j+j]==1)
					{
						flag=false;
						break;
					}
				}
				if (flag)
				{
					record1_i=i;
					record1_j=small_j;
					record2_i=i;
					record2_j=big_j;
					if (change_check_i)
					{
						record1_j=big_j;
						record2_j=small_j;
					}
					if (i<small_i)
					{
						for (int m=i;m<=small_i;m++)
						{
							if (button_flag[m*gridsize_j+change1_j]==1)
							{
								flag=false;
								break;
							}
						}
						if (flag)
						{
							for (int m=i;m<=big_i;m++)
							{
								if (button_flag[m*gridsize_j+change2_j]==1)
								{
									flag=false;
									break;
								}
							}
						}
					}
					else if (i<big_i)
					{
						for (int m=small_i;m<=i;m++)
						{
							if (button_flag[m*gridsize_j+change1_j]==1)
							{
								flag=false;
								break;
							}
						}
						if (flag)
						{
							for (int m=i;m<=big_i;m++)
							{
								if (button_flag[m*gridsize_j+change2_j]==1)
								{
									flag=false;
									break;
								}
							}
						}
					}
					else
					{
						for (int m=small_i;m<=i;m++)
						{
							if (button_flag[m*gridsize_j+change1_j]==1)
							{
								flag=false;
								break;
							}
						}
						if (flag)
						{
							for (int m=big_i;m<=i;m++)
							{
								if (button_flag[m*gridsize_j+change2_j]==1)
								{
									flag=false;
									break;
								}
							}
						}
					}
				}
				if (flag) break;
			}	
		}
		
		if ((record_flag)||(flag))
		{
			return true;
		}
		else
		{
			button_flag[first_button_i*gridsize_j+first_button_j]=1;
			button_flag[second_button_i*gridsize_j+second_button_j]=1;
			return false;
		}		
	}
	
	public boolean check()//检查是否还有可以连接的
	{
		boolean flag_check=false;
		for (int i=0;i<num;i++)
		{
			for (int j=0;j<pic_num;j++)
			{
				for (int k=j+1;k<pic_num;k++)
				{
					first_button_i=button_record_i[i][j];
					first_button_j=button_record_j[i][j];
					second_button_i=button_record_i[i][k];
					second_button_j=button_record_j[i][k];
					if ((button_flag[first_button_i*gridsize_j+first_button_j]==1)&&(button_flag[second_button_i*gridsize_j+second_button_j]==1))
					{
						button_flag[first_button_i*gridsize_j+first_button_j]=0;
						button_flag[second_button_i*gridsize_j+second_button_j]=0;
						if (search())
						{
							flag_check=true;
							button_flag[first_button_i*gridsize_j+first_button_j]=1;
							button_flag[second_button_i*gridsize_j+second_button_j]=1;
							break;
						}
					}
				}
				if (flag_check) break;
			}
			if (flag_check) break;
		}
		helpfirst_button_i=first_button_i;
		helpfirst_button_j=first_button_j;
		helpsecond_button_i=second_button_i;
		helpsecond_button_j=second_button_j;
		return flag_check;
	}

	public void wash()//洗牌
	{
		int ran;
		String chan;
		Icon pic_chan;
		int x1,x2,x3,x4;
		int y1=0;
		int y2=0;
		for (int i=0;i<size;i++)
		{
			btn[i].setBackground(Color.lightGray);
			if (button_flag[i]==1)
			{
				x1=-1;
				x2=-1;
				x3=-1;
				x4=-1;
				for (int m=0;m<num;m++)
				{
					for (int n=0;n<pic_num;n++)
					{
						if ((button_record_i[m][n]*gridsize_j+button_record_j[m][n])==i)
						{
							x1=m;
							x2=n;
							break;
						}
					}
					if (x1!=-1)
						break;
				}
				ran=(int)((Math.random())*(size));
				while(button_flag[ran]==0)
				{
					if (ran==size-1)
						ran=0;
					ran=ran+1;
				}
				chan=btn[i].getText();
				btn[i].setText(btn[ran].getText());
				btn[ran].setText(chan);
				pic_chan=btn[i].getIcon();
				btn[i].setIcon(btn[ran].getIcon());
				btn[ran].setIcon(pic_chan);
				for (int m=0;m<num;m++)
				{
					for (int n=0;n<pic_num;n++)
					{
						if ((button_record_i[m][n]*gridsize_j+button_record_j[m][n])==ran)
						{
							x3=m;
							x4=n;
							break;
						}
					}
					if (x3!=-1)
						break;
				}
				y1=button_record_i[x3][x4];
				y2=button_record_j[x3][x4];
				button_record_i[x3][x4]=button_record_i[x1][x2];
				button_record_j[x3][x4]=button_record_j[x1][x2];
				button_record_i[x1][x2]=y1;
				button_record_j[x1][x2]=y2;
			}
		}
	}
	
	public Timer createTimer(){
		//TODO load max seconds from config file or due to game level		
		return new Timer(180+level*60);
	}
}

⌨️ 快捷键说明

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