|
|
原 作 者: 陈雄
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class game24
{
Frame f=new Frame("24点游戏");
TextField t1=new TextField("1");
TextField t2=new TextField("2");
TextField t3=new TextField("3");
TextField t4=new TextField("4");
TextArea t5=new TextArea("1*2*3*4=24",5,18,TextArea.SCROLLBARS_VERTICAL_ONLY);
Button b=new Button("显示答案");
Label label=new Label("2002112113陈雄");
MenuBar mb1=new MenuBar();
Menu m1=new Menu("输入");
Menu m2=new Menu("关于");
MenuItem mi1=new MenuItem("随机");
MenuItem mi2=new MenuItem("自行");
MenuItem mi3=new MenuItem("作者");
MenuItem mi4=new MenuItem("帮助");
Font ft1=new Font("Serif",Font.BOLD,14);
Random ran1=new Random();
Color color = new Color(239,235,222);
public static void main(String[] args)
{
game24 that=new game24();
that.go();
}
void go()
{
f.setSize(160,250);
f.setBackground(color);
f.setLocation(300,300);
f.setLayout(new FlowLayout());
f.setMenuBar(mb1);
mb1.add(m1);
mb1.add(m2);
m1.add(mi1);
m1.add(mi2);
m2.add(mi3);
m2.add(mi4);
f.add(t1);
f.add(t2);
f.add(t3);
f.add(t4);
f.add(b);
f.add(t5);
f.add(label);
label.setEnabled(false);
f.setVisible(true);
f.setResizable(false);
b.addActionListener(new ButtonHandler());
mi1.addActionListener(new MenuHandler(1));
mi2.addActionListener(new MenuHandler(2));
mi3.addActionListener(new MenuHandler(3));
mi4.addActionListener(new MenuHandler(4));
f.addWindowListener(new WindowHandler());
}
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
t5.setText("结果如下:\n");
panduan();
}
}
class WindowHandler extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}
class MenuHandler implements ActionListener
{
private int ch;
MenuHandler(int select)
{
ch=select;
}
public void actionPerformed(ActionEvent e)
{
switch(ch)
{
case 1:t1.setText(ran1.nextInt()%5+5+"");
t2.setText(ran1.nextInt()%5+5+"");
t3.setText(ran1.nextInt()%5+5+"");
t4.setText(ran1.nextInt()%5+5+"");
break;
case 2:break;
case 3:label.setText("2002112113陈雄");
label.setEnabled(true);
label.setForeground(Color.red);
label.setFont(ft1);
break;
case 4:label.setEnabled(true);
label.setText("QQ:153297121");
break;
}
}
}
void panduan()
{
double a,b,c,d;
int n=0;
a=Double.valueOf(t1.getText()).doubleValue();
b=Double.valueOf(t2.getText()).doubleValue();
c=Double.valueOf(t3.getText()).doubleValue();
d=Double.valueOf(t4.getText()).doubleValue();
if(a<1||a>9||b<1||b>9||c<1||c>9||d<1||d>9)
t5.setText("请输入1-9之间的整数");
else
{
judge(a,b,c,d);
judge(a,b,d,c);
judge(a,c,b,d);
judge(a,c,d,b);
judge(a,d,b,c);
judge(a,d,c,b);
judge(b,a,c,d);
judge(b,a,d,c);
judge(b,c,a,d);
judge(b,c,d,a);
judge(b,d,a,c);
judge(b,d,c,a);
judge(c,a,b,d);
judge(c,a,d,b);
judge(c,b,a,d);
judge(c,b,d,a);
judge(c,d,a,b);
judge(c,d,b,a);
judge(d,a,b,c);
judge(d,a,c,b);
judge(d,b,a,c);
judge(d,b,c,a);
judge(d,c,a,b);
judge(d,c,b,a);
}
}
void judge(double a, double b, double c, double d)
{
int i,j,k,u,v;
double x=0;
double[] s,t,p;
s=new double[4];
t=new double[4];
p=new double[18];
s[0]=a+b;
s[1]=a-b;
s[2]=a*b;
s[3]=a/b;
t[0]=c+d;
t[1]=c-d;
t[2]=c*d;
t[3]=c/d;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
for(k=0;k<4;k++)
{
switch(k)
{
case 0: x=s+t[j];break;
case 1: x=s-t[j];break;
case 2: x=s*t[j];break;
case 3: x=s/t[j];break;
}
if(x<=24.0&&x>23.9)
out1(a,b,c,d,i,j,k);
}
}
}
p[0]=a+b+c;
p[1]=a+b-c;
p[2]=a-b-c;
p[3]=a*b+c;
p[4]=a*b-c;
p[5]=a-b*c;
p[6]=a/b+c;
p[7]=a/b-c;
p[8]=a-b/c;
p[9]=a*b*c;
p[10]=a*b/c;
p[11]=a/b/c;
p[12]=(a+b)*c;
p[13]=(a-b)*c;
p[14]=(a+b)/c;
p[15]=(a-b)/c;
p[16]=a/(b+c);
p[17]=a/(b-c);
for(u=0;u<18;u++)
{
for(v=0;v<5;v++)
{
switch(v)
{
case 0: x=p+d;break;
case 1: x=p-d;break;
case 2: x=p*d;break;
case 3: x=p/d;break;
case 4: x=d/p;break;
}
if(x<=24.0&&x>23.9)
out2(a,b,c,d,u,v);
}
}
}
void out1(double a, double b,double c,double d, int i, int j,int k)
{
switch(k)
{
case 0:
if(i==0) t5.append((int)(a)+"+"+(int)(b));
if(i==1) t5.append((int)(a)+"-"+(int)(b));
if(i==2) t5.append((int)(a)+"*"+(int)(b));
if(i==3) t5.append((int)(a)+"/"+(int)(b));
t5.append("+");
if(j==0) t5.append((int)(c)+"+"+(int)(d));
if(j==1) t5.append((int)(c)+"-"+(int)(d));
if(j==2) t5.append((int)(c)+"*"+(int)(d));
if(j==3) t5.append((int)(c)+"/"+(int)(d));
t5.append("=24\n");
break;
case 1:
if(i==0) t5.append((int)(a)+"+"+(int)(b));
if(i==1) t5.append((int)(a)+"-"+(int)(b));
if(i==2) t5.append((int)(a)+"*"+(int)(b));
if(i==3) t5.append((int)(a)+"/"+(int)(b));
t5.append("-");
if(j==0) t5.append("("+(int)(c)+"+"+(int)(d)+")");
if(j==1) t5.append("("+(int)(c)+"-"+(int)(d)+")");
if(j==2) t5.append((int)(c)+"*"+(int)(d));
if(j==3) t5.append((int)(c)+"/"+(int)(d));
t5.append("=24\n");
break;
case 2:
if(i==0) t5.append("("+(int)(a)+"+"+(int)(b)+")");
if(i==1) t5.append("("+(int)(a)+"-"+(int)(b)+")");
if(i==2) t5.append((int)(a)+"*"+(int)(b));
if(i==3) t5.append((int)(a)+"/"+(int)(b));
t5.append("*");
if(j==0) t5.append("("+(int)(c)+"+"+(int)(d)+")");
if(j==1) t5.append("("+(int)(c)+"-"+(int)(d)+")");
if(j==2) t5.append((int)(c)+"*"+(int)(d));
if(j==3) t5.append((int)(c)+"/"+(int)(d));
t5.append("=24\n");
break;
case 3:
if(i==0) t5.append("("+(int)(a)+"+"+(int)(b)+")");
if(i==1) t5.append("("+(int)(a)+"-"+(int)(b)+")");
if(i==2) t5.append((int)(a)+"*"+(int)(b));
if(i==3) t5.append((int)(a)+"/"+(int)(b));
t5.append("/");
if(j==0) t5.append("("+(int)(c)+"+"+(int)(d)+")");
if(j==1) t5.append("("+(int)(c)+"-"+(int)(d)+")");
if(j==2) t5.append("("+(int)(c)+"*"+(int)(d)+")");
if(j==3) t5.append("("+(int)(c)+"/"+(int)(d)+")");
t5.append("=24\n");
break;
}
}
void out2(double a,double b, double c,double d, int u, int v)
{
switch(u)
{
case 0:
if(v==2) t5.append("("+(int)(a)+"+"+(int)(b)+"+"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"+"+(int)(b)+"+"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"+"+(int)(b)+"+"+(int)(c)+")=24\n");
break;
case 1:
if(v==2) t5.append("("+(int)(a)+"+"+(int)(b)+"-"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"+"+(int)(b)+"-"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"+"+(int)(b)+"-"+(int)(c)+")=24\n");
break;
case 2:
if(v==2) t5.append("("+(int)(a)+"-"+(int)(b)+"-"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"-"+(int)(b)+"-"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"-"+(int)(b)+"-"+(int)(c)+")=24\n");
break;
case 3:
if(v==2) t5.append("("+(int)(a)+"*"+(int)(b)+"+"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"*"+(int)(b)+"+"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"*"+(int)(b)+"+"+(int)(c)+")=24\n");
break;
case 4:
if(v==2) t5.append("("+(int)(a)+"*"+(int)(b)+"-"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"*"+(int)(b)+"-"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"*"+(int)(b)+"-"+(int)(c)+")=24\n");
break;
case 5:
if(v==2) t5.append("("+(int)(a)+"-"+(int)(b)+"*"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"-"+(int)(b)+"*"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"-"+(int)(b)+"*"+(int)(c)+")=24\n");
break;
case 6:
if(v==2) t5.append("("+(int)(a)+"/"+(int)(b)+"+"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"/"+(int)(b)+"+"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"/"+(int)(b)+"+"+(int)(c)+")=24\n");
break;
case 7:
if(v==2) t5.append("("+(int)(a)+"/"+(int)(b)+"-"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"/"+(int)(b)+"-"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"/"+(int)(b)+"-"+(int)(c)+")=24\n");
break;
case 8:
if(v==2) t5.append("("+(int)(a)+"-"+(int)(b)+"/"+(int)(c)+")*"+(int)(d)+"=24\n");
if(v==3) t5.append("("+(int)(a)+"-"+(int)(b)+"/"+(int)(c)+")/"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"-"+(int)(b)+"/"+(int)(c)+")=24\n");
break;
case 9:
if(v==0) t5.append((int)(a)+"*"+(int)(b)+"*"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append((int)(a)+"*"+(int)(b)+"*"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"*"+(int)(b)+"*"+(int)(c)+")=24\n");
break;
case 10:
if(v==0) t5.append((int)(a)+"*"+(int)(b)+"/"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append((int)(a)+"*"+(int)(b)+"/"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"*"+(int)(b)+"/"+(int)(c)+")=24\n");
break;
case 11:
if(v==0) t5.append((int)(a)+"/"+(int)(b)+"/"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append((int)(a)+"/"+(int)(b)+"/"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"/"+(int)(b)+"/"+(int)(c)+")=24\n");
break;
case 12:
if(v==0) t5.append("("+(int)(a)+"+"+(int)(b)+")*"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append("("+(int)(a)+"+"+(int)(b)+")*"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/(("+(int)(a)+"+"+(int)(b)+")*"+(int)(c)+")=24\n");
break;
case 13:
if(v==0) t5.append("("+(int)(a)+"-"+(int)(b)+")*"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append("("+(int)(a)+"-"+(int)(b)+")*"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/(("+(int)(a)+"-"+(int)(b)+")*"+(int)(c)+")=24\n");
break;
case 14:
if(v==0) t5.append("(("+(int)(a)+"+"+(int)(b)+")/"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append("(("+(int)(a)+"+"+(int)(b)+")/"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/(("+(int)(a)+"+"+(int)(b)+")/"+(int)(c)+")=24\n");
break;
case 15:
if(v==0) t5.append("(("+(int)(a)+"-"+(int)(b)+")/"+(int)(c)+"+"+(int)(d)+"=24\n");
if(v==1) t5.append("(("+(int)(a)+"-"+(int)(b)+")/"+(int)(c)+"-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/(("+(int)(a)+"-"+(int)(b)+")/"+(int)(c)+")=24\n");
break;
case 16:
if(v==0) t5.append("("+(int)(a)+"/("+(int)(b)+"+"+(int)(c)+"))+"+(int)(d)+"=24\n");
if(v==1) t5.append("("+(int)(a)+"/("+(int)(b)+"+"+(int)(c)+"))-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"/("+(int)(b)+"+"+(int)(c)+"))=24\n");
break;
case 17:
if(v==0) t5.append("("+(int)(a)+"/("+(int)(b)+"-"+(int)(c)+"))+"+(int)(d)+"=24\n");
if(v==1) t5.append("("+(int)(a)+"/("+(int)(b)+"-"+(int)(c)+"))-"+(int)(d)+"=24\n");
if(v==4) t5.append((int)(d)+"/("+(int)(a)+"/("+(int)(b)+"-"+(int)(c)+"))=24\n");
break;
}
}
}
|
|