用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

24点小游戏 java版

2014-03-24 作者: java举报

[java]代码库

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class GameMode implements ActionListener, MouseListener {
    Test mainMenu;
    String name = "";
    JFrame f = new JFrame("24点游戏-游戏模式");
    JLayeredPane l = f.getLayeredPane();
    JButton b1 = new JButton(new ImageIcon("image/Pass.png"));
    JButton b2 = new JButton(new ImageIcon("image/Return.png"));
    JButton bO1 = new JButton(new ImageIcon("image/+.png"));
    JButton bO2 = new JButton(new ImageIcon("image/-.png"));
    JButton bO3 = new JButton(new ImageIcon("image/×.png"));
    JButton bO4 = new JButton(new ImageIcon("image/÷.png"));
    JButton bO5 = new JButton(new ImageIcon("image/(.png"));
    JButton bO6 = new JButton(new ImageIcon("image/).png"));
    JButton bO7 = new JButton(new ImageIcon("image/=.png"));
    JButton bO8 = new JButton("Clear");
    Card[] card = new Card[] { new Card(), new Card(), new Card(), new Card() };
    FindExpression fe = new FindExpression();
    CalculateExpression ce = new CalculateExpression();
    JLabel JLbExpression = new JLabel("");
    String expression;
    JLabel JLbTime = new JLabel("Time : ");
    static Timer timer;
    int time;
    boolean canEnterNumber;
 
    public GameMode(Test mainMenu) {
        this.mainMenu = mainMenu;
        JLabel bg = new JLabel(new ImageIcon("image/Game.jpg"));
        bg.setBounds(0, 0, 800, 600);
 
        b1.setBorderPainted(false);
        b1.setContentAreaFilled(false);
        b1.setRolloverIcon(new ImageIcon("image/PassS.png"));
        b1.setBounds(20, 530, 160, 40);
        b1.addMouseListener(this);
        b2.setBorderPainted(false);
        b2.setContentAreaFilled(false);
        b2.setRolloverIcon(new ImageIcon("image/ReturnS.png"));
        b2.setBounds(200, 530, 160, 40);
        b2.addMouseListener(this);
        bO1.setBorderPainted(false);
        bO1.setContentAreaFilled(false);
        bO1.setRolloverIcon(new ImageIcon("image/+S.png"));
        bO1.setBounds(20, 490, 40, 40);
        bO1.addMouseListener(this);
        bO2.setBorderPainted(false);
        bO2.setContentAreaFilled(false);
        bO2.setRolloverIcon(new ImageIcon("image/-S.png"));
        bO2.setBounds(60, 490, 40, 40);
        bO2.addMouseListener(this);
        bO3.setBorderPainted(false);
        bO3.setContentAreaFilled(false);
        bO3.setRolloverIcon(new ImageIcon("image/×S.png"));
        bO3.setBounds(100, 490, 40, 40);
        bO3.addMouseListener(this);
        bO4.setBorderPainted(false);
        bO4.setContentAreaFilled(false);
        bO4.setRolloverIcon(new ImageIcon("image/÷S.png"));
        bO4.setBounds(140, 490, 40, 40);
        bO4.addMouseListener(this);
        bO5.setBorderPainted(false);
        bO5.setContentAreaFilled(false);
        bO5.setRolloverIcon(new ImageIcon("image/(S.png"));
        bO5.setBounds(180, 490, 40, 40);
        bO5.addMouseListener(this);
        bO6.setBorderPainted(false);
        bO6.setContentAreaFilled(false);
        bO6.setRolloverIcon(new ImageIcon("image/)S.png"));
        bO6.setBounds(220, 490, 40, 40);
        bO6.addMouseListener(this);
        bO7.setBorderPainted(false);
        bO7.setContentAreaFilled(false);
        bO7.setRolloverIcon(new ImageIcon("image/=S.png"));
        bO7.setBounds(260, 490, 40, 40);
        bO7.addMouseListener(this);
        bO8.setBorderPainted(false);
        bO8.setContentAreaFilled(false);
        bO8.setBounds(300, 490, 80, 40);
        bO8.addMouseListener(this);
        JLbExpression.setForeground(Color.WHITE);
        JLbExpression.setBounds(40, 200, 400, 50);
        JLbExpression.setFont(new Font("Arial", Font.BOLD, 30));
        JLbTime.setForeground(Color.WHITE);
        JLbTime.setBounds(20, 20, 400, 50);
        JLbTime.setFont(new Font("Arial", Font.BOLD, 30));
 
        l.add(bg, new Integer(0));
        l.add(b1, new Integer(1));
        l.add(b2, new Integer(1));
        l.add(bO1, new Integer(1));
        l.add(bO2, new Integer(1));
        l.add(bO3, new Integer(1));
        l.add(bO4, new Integer(1));
        l.add(bO5, new Integer(1));
        l.add(bO6, new Integer(1));
        l.add(bO7, new Integer(1));
        l.add(bO8, new Integer(1));
        l.add(JLbExpression, new Integer(1));
        l.add(JLbTime, new Integer(1));
 
        f.setResizable(false);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(800, 600);
        f.setLocationRelativeTo(null);
        while (name.equals("")) {
            name = JOptionPane.showInputDialog(null, "请输入您的昵称", "24点游戏-游戏模式",
                    JOptionPane.QUESTION_MESSAGE);
            if (name == null) {
                mainMenu.setVisible(true);
                return;
            }
        }
        f.setVisible(true);
        start();
    }
 
    public void start() {
        fe.setNumbers(new int[] { 0, 0, 0, 0 });
        canEnterNumber = true;
        l.remove(card[0]);
        l.remove(card[1]);
        l.remove(card[2]);
        l.remove(card[3]);
        while (fe.getExpression()[0]
                .equals("无解\n                       第1页 / 共1页")) {
            JLbExpression.setText("");
            expression = "";
            for (int i = 0; i < 4; i++) {
                card[i] = new Card((int) (Math.random() * 13 + 1),
                        (int) (Math.random() * 4));
                for (int j = 0; j < i; j++) {
                    if (card[i].getNumber() == card[j].getNumber()
                            && card[i].getVariety()
                                    .equals(card[j].getVariety())) {
                        continue;
                    }
                }
            }
            fe.setNumbers(new int[] { card[0].getNumber(), card[1].getNumber(),
                    card[2].getNumber(), card[3].getNumber() });
        }
        card[0].setBounds(new Rectangle(60, 300, 71, 96));
        card[0].setVisible(true);
        card[1].setBounds(new Rectangle(140, 300, 71, 96));
        card[1].setVisible(true);
        card[2].setBounds(new Rectangle(220, 300, 71, 96));
        card[2].setVisible(true);
        card[3].setBounds(new Rectangle(300, 300, 71, 96));
        card[3].setVisible(true);
        card[0].addMouseListener(this);
        card[1].addMouseListener(this);
        card[2].addMouseListener(this);
        card[3].addMouseListener(this);
        card[0].setEnabled(true);
        card[1].setEnabled(true);
        card[2].setEnabled(true);
        card[3].setEnabled(true);
        l.add(card[0], new Integer(1));
        l.add(card[1], new Integer(1));
        l.add(card[2], new Integer(1));
        l.add(card[3], new Integer(1));
        timer = new Timer(1000, this);
        time = card[0].getTime() + card[1].getTime() + card[2].getTime()
                + card[3].getTime();
        JLbTime.setForeground(Color.WHITE);
        JLbTime.setText("Time : " + time);
        timer.start();
    }
 
    public void actionPerformed(ActionEvent e) {
        time -= 1;
        JLbTime.setText("Time : " + time);
        if (time == 15) {
            JLbTime.setForeground(Color.RED);
        }
        if (time <= 0) {
            timeIsUp();
        }
    }
 
    public void mouseClicked(MouseEvent e) {
        if (e.getSource() == b1) {
            new RankList().addPlayer(name, -1);
            timer.stop();
            start();
        }
        if (e.getSource() == b2) {
            mainMenu.setVisible(true);
            timer.stop();
            f.dispose();
        }
        if (canEnterNumber) {
            for (int i = 0; i < 4; i++) {
                if (e.getSource() == card[i]) {
                    JLbExpression.setText(JLbExpression.getText()
                            + card[i].getNumber());
                    expression += card[i].getNumber();
                    card[i].setEnabled(false);
                    canEnterNumber = false;
                }
            }
        }
        if (e.getSource() == bO1) {
            JLbExpression.setText(JLbExpression.getText() + "+");
            expression += "+";
            canEnterNumber = true;
        }
        if (e.getSource() == bO2) {
            JLbExpression.setText(JLbExpression.getText() + "-");
            expression += "-";
            canEnterNumber = true;
        }
        if (e.getSource() == bO3) {
            JLbExpression.setText(JLbExpression.getText() + "×");
            expression += "*";
            canEnterNumber = true;
        }
        if (e.getSource() == bO4) {
            JLbExpression.setText(JLbExpression.getText() + "÷");
            expression += "/";
            canEnterNumber = true;
        }
        if (e.getSource() == bO5) {
            JLbExpression.setText(JLbExpression.getText() + "(");
            expression += "(";
            canEnterNumber = true;
        }
        if (e.getSource() == bO6) {
            JLbExpression.setText(JLbExpression.getText() + ")");
            expression += ")";
            canEnterNumber = true;
        }
        if (e.getSource() == bO7 && !card[0].isEnabled()
                && !card[1].isEnabled() && !card[2].isEnabled()
                && !card[3].isEnabled()) {
            ce.setExpression(expression);
            canEnterNumber = true;
            if (!ce.isCorrect()) {
                JOptionPane.showMessageDialog(null, "表达式输入有误,请重新输入",
                        "24点游戏-游戏模式", JOptionPane.INFORMATION_MESSAGE);
                JLbExpression.setText("");
                expression = "";
                card[0].setEnabled(true);
                card[1].setEnabled(true);
                card[2].setEnabled(true);
                card[3].setEnabled(true);
                return;
            }
            timer.stop();
            if (Math.pow(ce.getDoubleResult() - 24, 2) < 0.000001) {
                right();
            } else {
                fault();
            }
        }
        if (e.getSource() == bO8) {
            canEnterNumber = true;
            JLbExpression.setText("");
            expression = "";
            card[0].setEnabled(true);
            card[1].setEnabled(true);
            card[2].setEnabled(true);
            card[3].setEnabled(true);
        }
    }
 
    public void mouseEntered(MouseEvent e) {
    }
 
    public void mouseExited(MouseEvent e) {
    }
 
    public void mouseReleased(MouseEvent e) {
    }
 
    public void mousePressed(MouseEvent e) {
    }
 
    void right() {
        int score = card[0].getScore() + card[1].getScore()
                + card[2].getScore() + card[3].getScore();
        JOptionPane.showMessageDialog(null, "回答正确,加上" + score + "分",
                "24点游戏-游戏模式", JOptionPane.PLAIN_MESSAGE, new ImageIcon(
                        "image\\right.gif"));
        new RankList().addPlayer(name, score);
        start();
    }
 
    void fault() {
        JOptionPane.showMessageDialog(null, "回答错误,扣除1分", "24点游戏-游戏模式",
                JOptionPane.PLAIN_MESSAGE, new ImageIcon("image\\fault.gif"));
        new RankList().addPlayer(name, -1);
        start();
    }
 
    void timeIsUp() {
        timer.stop();
        JOptionPane
                .showMessageDialog(null, "时间到,扣除1分", "24点游戏-游戏模式",
                        JOptionPane.PLAIN_MESSAGE, new ImageIcon(
                                "image\\TimeIsUp.gif"));
        new RankList().addPlayer(name, -1);
        start();
    }
 
}

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...