⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamemode.java

📁 一个基于Java技术编写的24点游戏逼真图形版
💻 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();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -