import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.border.*;
import java.lang.*;public class Suan24 extends JFrame implements ActionListener
{
short i;
JLabel photo[]=new JLabel[4];
JTextField bds;
    JButton begin,ans,check;
    JTextArea expl;
    short RandomData[]=new short[4];
    JScrollPane pict[]=new JScrollPane[4];
    JPanel inputp=new JPanel();
JButton exitButton,explButton;
    JToolBar toolbar;
    Do24 o;
JLabel disptime;
Timer timer;
int times=0;    
    
    Suan24()
    {
     //设置框架标题
     super("快算24扑克牌游戏");    
     //添加窗口事件监听器
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
    
     //取得框架的内容面板
Container con=getContentPane();

//创建并添加组件

JPanel input=new JPanel();
BorderLayout  layout=new BorderLayout();
input.setLayout(layout);
// input.setBackground(Color.blue); explButton=new JButton("游戏说明");
explButton.addActionListener(this);
explButton.setActionCommand("intro");
exitButton=new JButton("退出");
exitButton.addActionListener(this);
exitButton.setActionCommand("exit");
toolbar=new JToolBar();
toolbar.add(explButton);
toolbar.add(exitButton);
toolbar.add(disptime);
        con.add(toolbar,"North");

Box nBox=Box.createHorizontalBox();
for(i=0;i<4;i++)
{
photo[i]=new JLabel(new ImageIcon("E:\\game\\pic1\\bj.gif"));
pict[i]=new JScrollPane(photo[i]);
inputp.add(pict[i]); }
nBox.add(inputp);
nBox.setBackground(Color.red); Box box=Box.createHorizontalBox();
bds=new JTextField(20);
box.add(new JLabel("请输入计算表达式"));
box.add(Box.createHorizontalStrut(5));
bds.addActionListener(this);
box.add(bds);
box.add(Box.createHorizontalGlue());

//添加按钮
Box buton=Box.createHorizontalBox();
begin=new JButton("开始发牌");
begin.addActionListener(this);
ans=new JButton("提交答案");
ans.addActionListener(this);
    check=new JButton("查看答案");
check.addActionListener(this);    
     buton.add(begin);
     buton.add(ans);
     buton.add(check);
    
Box wBox=Box.createHorizontalBox();
wBox.add(box);
wBox.add(buton);

Box eBox=Box.createHorizontalBox();
expl=new JTextArea(10,30);
eBox.add(Box.createVerticalStrut(10));

Box sBox=Box.createHorizontalBox();
sBox.add(wBox);
sBox.add(eBox);
nBox.setBackground(Color.blue);
con.add(nBox,"Center");
con.add(sBox,"South");


//增加一个带标题的边框
/* Border border=BorderFactory.createTitledBorder(
BorderFactory.createLineBorder(Color.RED,2),
"快算24扑克牌游戏",
TitledBorder.CENTER,TitledBorder.ABOVE_TOP,
new Font("隶书",Font.BOLD,36),
Color.blue);
input.setBorder(border);
*/    
    //设置框架可见
setBounds(200,100,600,500);
setVisible(true);
//setExtendedState(MAXIMIZED_BOTH);
}


//实现ActionListener接口中的方法
public void actionPerformed(ActionEvent e)
{ //退出
if (e.getActionCommand().equals("exit"))
{
if (JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(this,"你确定要退出本系统吗?","确认",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE))
{
System.exit(0);
}
}

if (e.getActionCommand().equals("intro"))
{
Texts text=new Texts();
}

        //按"开始发牌"按钮随机显示扑克牌
if (e.getSource()==begin)
{
while (true){
int dataBak[] = new int[4];
for(i=0;i<4;i++)
{  
RandomData[i]=(short)((Math.random()*15)+1);
dataBak[i]=RandomData[i];    
}
    for(i=0;i<4;i++)
    {
     if (RandomData[i]>10)
     {
     RandomData[i]=1;
     }
    }
     o=new Do24(RandomData[0],RandomData[1],RandomData[2],RandomData[3]);
            if(o.getResultNumber()!=0)
            {
            
   for(i=0;i<4;i++)
   {                String name="E:\\game\\pic1\\"+dataBak[i]+".gif";
                photo[i].setIcon(new ImageIcon(name));
   }
   
   break;
}
  }

bds.setText("");

disptime=new JLabel("用时:");
timer=new Timer(1000,this);
timer.start();
disptime.setText("用时(秒):"+times++);
if (times>300)
{
timer.stop();
JOptionPane.showMessageDialog(this,"时间到!");
times=0;
}
}

//按"提交答案"校对结果
if (e.getSource()==ans||e.getSource()==bds)
{
String res;
for(i=0;i<o.getResultNumber();i++)
{

res=o.Result[i];
String s=bds.getText();
int t=res.length()-3;
if(res.regionMatches(0,s,0,t))
    {
        JOptionPane.showMessageDialog(null,"恭喜您,答对了!!\n 用时:"+times);
     timer.stop();
      break;
    }
}
if(i>=o.getResultNumber())
  JOptionPane.showMessageDialog(null,"笨蛋,答错了!!");
         }
        //按"查看答案"按钮
         if(e.getSource()==check)
         {
                   
             JOptionPane.showMessageDialog(null,"正确答案是:"+o.Result[0]);
                
         }       
 }        
   public static void main(String args[])
    {
     Suan24 game;
     game=new Suan24();
    }
 }

class Texts extends JFrame 
{
JLabel aboutp;
JTextArea about;
JPanel panel3; Texts()
{
super("游戏说明");
String text;
        text="1 、点击 开始发牌 按钮,游戏开始,系统会随机发出4张扑克牌,同时计时器开始计时。\n2、玩家根据牌面数值(1-10为其实际数值,11-13、大小王都为1)使用+、-、*、/及括号写出计算表达式,使得结果为24。要求每张牌只能用一次。\n3、请你相信每一次的牌都可运算出结果,不可算的牌系统会自动重新出牌。";
setSize(330,400);
ImageIcon icon=new ImageIcon("E:\\game\\pic1\\15.gif");
aboutp=new JLabel("",icon,JLabel.RIGHT);
about=new JTextArea(text,10,25);
about.setLineWrap(true);
about.setEditable(false);
JScrollPane sp=new JScrollPane(about);
panel3=new JPanel();
panel3.add(aboutp);
panel3.add(sp);

Container con=getContentPane();
con.add(panel3,"Center");

setVisible(true);
}
}