import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Timer;public class GameOne  
{
  public static long timestart;
  public static long timenow;
  private static int screenHerght;
  private static int screenWidth;
  private static Random random = new Random();
  public static JButton[] jbutton= new JButton[100];
  public static ArrayList<String> arraylist = new ArrayList<String>();
  public static ArrayList<String> arraylist1 = new ArrayList<String>();
  public static JFrame gamestart = new JFrame("用最短的时间选出两两相同的数字!");;
  public static JButton start=new JButton("game start!");;
  public static JFrame jframe= new JFrame("Game!");;
  public static Timer timer=new Timer(1,new GameSox());;
  public static void main(String[] args)
{
//取得当前屏幕大小
  Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
 screenHerght=screenSize.height;
 screenWidth=screenSize.width;
 //放置开始窗口
gamestart.setLocation(screenWidth/3, screenHerght/2);
gamestart.setSize(320,150);
gamestart.add(start);
start.addActionListener(new GameSix());
gamestart.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
gamestart.setResizable(false);
//设置主窗口
jframe.setTitle("Game!");
jframe.setEnabled(false);
jframe.setLayout(new GridLayout(10,10));
jframe.setSize(650,650);
jframe.setLocation(screenWidth/4, screenHerght/4);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setResizable(false);
//取得随机数字
for(int i =0;i<100;i++)
{
          jbutton[i]=new JButton(String.valueOf(random.nextInt(20)));
arraylist1.add(jbutton[i].getText());
}
for(int i =0;i<100;i++)
{
for(int k = 0;k<100;k++)
{
if((arraylist1.get(i)).equals(arraylist1.get(k))&&i!=
k&&arraylist1.get(i)!="aa")
{
arraylist1.set(i,"aa");
arraylist1.set(k,"aa");
}
}
}
for(int i =0;i<100;i++)
{
if(arraylist1.get(i)!="aa")
{
for(int k = 0;k<100;k++)
{
if(i!=k&&arraylist1.get(k)!="aa")
{
jbutton[i].setText(jbutton[k].getText());
arraylist1.set(i,"aa");
arraylist1.set(k,"aa");
break;
}
}
}
}
//将按钮加入到主窗口
for(int i =0;i<100;i++)
{
for(int k = 0;k<100;k++)
{
jframe.add(jbutton[i]);
jbutton[i].setBackground(Color.orange);
jbutton[i].addActionListener(new GameSex());
}
}
//设置窗口可见
jframe.setVisible(true);
gamestart.setVisible(true);
}
}
class GameSex implements ActionListener
{
//Override actionPerformed
@Override
public void actionPerformed(ActionEvent e)
{
for(int i = 0;i<100;i++)
{
//循环出事件按钮
if(GameOne.jbutton[i].hashCode()==e.getSource().hashCode())
{
//button set Color.red
GameOne.jbutton[i].setBackground(Color.red);
//arraylist.add button.text
GameOne.arraylist.add(GameOne.jbutton[i].getText());
//处理不同text的buttons
if(e.getActionCommand().equals(GameOne.arraylist.get(0))==false)
{
//循环出当前的button
for(int k = 0;k<100;k++)
{
//条件:上下的buttons不是同一个且都是Color.red
if(i!=k&&GameOne.jbutton[k].getBackground()==Color.red)
{
//均恢复为Color.orange
GameOne.jbutton[i].setBackground(Color.orange);
GameOne.jbutton[k].setBackground(Color.orange);
//arraylist.clear
GameOne.arraylist.clear();
}
}
}
//处理相同text的buttons
if(GameOne.jbutton[i].getBackground()==Color.red&&e.
getActionCommand().equals(GameOne.arraylist.get(0)))
{
for(int k = 0;k<100;k++)
{
//条件:buttons均是Color.red且排除是同一个button
if(GameOne.jbutton[k].getBackground( )==
GameOne.jbutton[i].getBackground( )&&i!=k
&&GameOne.arraylist.size()>105)
{
GameOne.arraylist.clear();
//buttons.Text相同的清除颜色
GameOne.jbutton[i].setBackground(Color.black);
GameOne.jbutton[k].setBackground(Color.black);
//buttons.Text相同的隐藏
GameOne.jbutton[i].setVisible(false);
GameOne.jbutton[k].setVisible(false);
//buttons.Text相同的设置为hashCode
GameOne.jbutton[i].setText
(String.valueOf(GameOne.jbutton[i].hashCode()));
GameOne.jbutton[k].setText
(String.valueOf(GameOne.jbutton[i].hashCode()));
break;
}
}
}
}
}
}
}
class GameSix implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
//gamestart.setVisible(false)
GameOne.gamestart.setVisible(false);
GameOne.jframe.setEnabled(true);
for(int i =0;i<100;i++)
{
GameOne.jbutton[i].setEnabled(true);
}
GameOne.jframe.setVisible(true);
GameOne.timer.start();
GameOne.timenow=System.currentTimeMillis();
}
}
class GameSox  implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
int t=1;
GameOne.timestart = System.currentTimeMillis();
for(int i = 0;i<100;i++)
{
for(int k = 0;k<100;k++)
{

if(GameOne.jbutton[k].getBackground()==Color.black)
t = 0;
else
t = -1;
}
}
if(t==0)
{
GameOne.timer.stop();
}
if(GameOne.timestart/1000-GameOne.timenow/1000<60)
   GameOne.jframe.setTitle("Game!You use time:"
  +String.valueOf(GameOne.timestart/1000-GameOne.timenow/1000));
if((GameOne.timestart/1000-GameOne.timenow/1000)%60==0)
GameOne.jframe.setTitle("Game!You use time:"+String.valueOf
((GameOne.timestart-GameOne.timenow)/1000/60)+":"+"0");
if(GameOne.timestart/1000-GameOne.timenow/1000>60)
GameOne.jframe.setTitle("Game!You use time:"
+String.valueOf((GameOne.timestart-GameOne.timenow)/1000/60)+":"
+String.valueOf(((GameOne.timestart-GameOne.timenow)/1000)-
(((GameOne.timestart-GameOne.timenow)/1000)/60)*60));
}
}