游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1572|回复: 0

一个不错24点游戏源代码 wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-1-11 20:09:00 | 显示全部楼层 |阅读模式
 
    
 原 作 者: 陈雄  
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;
                }
        }

}





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 05:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表