📄 cal24.java
字号:
package cal24;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Cal24
extends Applet {
private boolean isStandalone = false;
//JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
JButton OK = new JButton();
JButton Start = new JButton();
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
int[] m_nStatus = new int[4];
PicPanel pTop = new PicPanel(this);
//Construct the applet
public Cal24() {
}
//Initialize the applet
public void init() {
try {
jbInit();
for (int i = 0; i < 4; i++) {
m_nStatus[i] = 0;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
this.setLayout(borderLayout1);
pTop.initImg();
//add(pTop, BorderLayout.CENTER);
OK.setText("确 定");
OK.addActionListener(new Cal24_OK_actionAdapter(this));
Start.setText("开始游戏");
Start.addActionListener(new Cal24_Start_actionAdapter(this));
jTextField1.setPreferredSize(new Dimension(57, 22));
jTextField1.setText("");
jTextField1.setColumns(15);
jLabel1.setText("请输入表达式");
this.add(pTop, BorderLayout.CENTER);
this.add(jPanel2, BorderLayout.SOUTH);
//jPanel1.add(pTop,null);
jPanel2.add(Start, null);
jPanel2.add(jLabel1, null);
jPanel2.add(jTextField1, null);
jPanel2.add(OK, null);
this.setSize(400, 200);
this.setLocation(300, 200);
this.setVisible(true);
}
private boolean isNumber(String str) {
if (str.equals("0") || str.equals("1") ||
str.equals("2") || str.equals("3") ||
str.equals("4") || str.equals("5") ||
str.equals("6") || str.equals("7") ||
str.equals("8") || str.equals("9")) {
return true;
}
else {
return false;
}
}
private boolean isOperator(String str) {
if (str.equals("+") || str.equals("-") ||
str.equals("*") || str.equals("/")) {
return true;
}
else {
return false;
}
}
public int calString(String str) {
/**
判断表达式的合法性
**/
int[] nums = new int[4];
String[] ops = new String[4];
for (int i = 0; i < 4; i++) {
ops[i] = "";
}
String tempStr, s = "";
int numNo = 0, opNo = 0;
for (int i = 0; i < str.length(); i++) {
tempStr = str.substring(i, i + 1);
if (isNumber(tempStr)) {
s += tempStr;
}
else if (isOperator(tempStr)) {
if (numNo >= 4 || opNo >= 3) {
return -1;
}
try {
nums[numNo] = Integer.parseInt(s);
}
catch (Exception e) {
}
s = "";
numNo++;
ops[opNo] = tempStr;
opNo++;
}
else {
return -1;
}
}
if (s.length() != 0 && numNo == 3) {
try {
nums[numNo] = Integer.parseInt(s);
}
catch (Exception e) {
return -1;
}
}
else {
return -1;
}
/**
判断表达式的数字就是扑克牌上的数字
**/
int tempStatus[] = new int[4];
for (int i = 0; i < 4; i++) {
tempStatus[i] = m_nStatus[i];
}
for (int i = 0; i < 4; i++) {
int j = 0;
boolean existed = false;
while (j < 4 && !existed) {
if (tempStatus[j] == nums[i]) {
tempStatus[j] = -1;
existed = true;
}
j++;
}
if (!existed) {
return -1;
}
}
/**
计算表达式的值
**/
int result = nums[0];
for (int i = 0; i < 3; i++) {
if (ops[i].equals("+")) {
result += nums[i + 1];
}
else if (ops[i].equals("-")) {
result -= nums[i + 1];
}
else if (ops[i].equals("*")) {
result *= nums[i + 1];
}
else if (ops[i].equals("/")) {
result /= nums[i + 1];
}
}
return result;
}
void Start_actionPerformed(ActionEvent e) {
for (int i = 0; i < 4; i++) {
m_nStatus[i] = (int) (Math.random() * 13) + 1;
}
pTop.repaint();
}
void OK_actionPerformed(ActionEvent e) {
try {
int result = calString(jTextField1.getText().trim());
if (result == -1) {
jTextField1.setText("");
jTextField1.requestFocus();
new Msg("你输入的表达式不合法,请重新输入!");
}
else {
if (result != 24) {
jTextField1.setText("");
jTextField1.requestFocus();
new Msg("你输入的表达式的值为" + result + ",请重新输入!");
}
else {
if (result == 24) {
jTextField1.requestFocus();
new Msg("祝贺你,你的输入正确!");
for (int i = 0; i < 4; i++) {
m_nStatus[i] = (int) (Math.random() * 13) + 1;
}
pTop.repaint();
jTextField1.setText("");
jTextField1.requestFocus();
}
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
class Cal24_Start_actionAdapter
implements java.awt.event.ActionListener {
Cal24 adaptee;
Cal24_Start_actionAdapter(Cal24 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.Start_actionPerformed(e);
}
}
class Cal24_OK_actionAdapter
implements java.awt.event.ActionListener {
Cal24 adaptee;
Cal24_OK_actionAdapter(Cal24 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.OK_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -