24点游戏 java实现_利用JAVA制作 24点游戏 程序代码

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.Random;

public class YH24 {

Frame f = new Frame("24点游戏"); // main frame

TextField t1 = new TextField("1",3); //text 1 2 3 4

TextField t2 = new TextField("2",3);

TextField t3 = new TextField("3",3);

TextField t4 = new TextField("4",3);

TextArea t5 = new TextArea("", 5,29, TextArea.SCROLLBARS_VERTICAL_ONLY); //textArea 1

Button b1 = new Button("显示结果"); //button1

Button b2 = new Button(" 再一次 ");

Button b3 = new Button(" 退出 ");

Label label = new Label("0212002912"); //label

/**

* 菜单

*/

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("帮助");

/**

* 初始化控件

*/

void go() {

f.setLayout(new FlowLayout());

f.setSize(280, 420);

f.setBackground( new Color(71, 192, 255));

f.setLocation(300, 450);

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(new Label(" 游戏介绍 "));

f.add(new Label(" 游戏任务: 24点这个游戏!它的游戏规则是: "));

f.add(new Label(" 把一副扑克牌,将J、Q、K三种牌和大王小王去掉, "));

f.add(new Label("再任意抽出4张牌,利用加、减、乘、除以及小括 "));

f.add(new Label("号的运算方法,算出得数的结果是24; "));

f.add(t1);

f.add(t2);

f.add(t3);

f.add(t4);

f.add(t5);

f.add(new Label(" "));

f.add(b1);

f.add(b2);

f.add(b3);

f.add(new Label(" "));

f.add(label);

label.setEnabled(false);

f.setVisible(true);

f.setResizable(false);

b1.addActionListener(new ButtonHandler());

/**

四个代表四个菜单

*/

mi1.addActionListener(new MenuHandler(1));

b2.addActionListener(new MenuHandler(1));

mi2.addActionListener(new MenuHandler(2));

mi3.addActionListener(new MenuHandler(3));

mi4.addActionListener(new MenuHandler(4));

f.addWindowListener(new WindowHandler());

b3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

System.exit(0);

}

}

);

}

/**

* 点击事件处理

*/

class ButtonHandler implements ActionListener {

public void actionPerformed(ActionEvent e) {

t5.setText("结果如下:\n");

panduan();

}

}

/**

* 判断text的数据合法性

*/

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 {

/**

迭代24种排列

*/

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[i] + t[j];

break;

case 1:

x = s[i] - t[j];

break;

case 2:

x = s[i] * t[j];

break;

case 3:

x = s[i] / 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[u] + d;

break;

case 1:

x = p[u] - d;

break;

case 2:

x = p[u] * d;

break;

case 3:

x = p[u] / d;

break;

case 4:

x = d / p[u];

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));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值