做个24点游戏  如何做个外挂呢???

下面是代码。。

 

 

import java.applet.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
//-----编写Applet的主界面--------------------
//----------实现ActionListener监听接口,用来处理ActionEvent事件------------
public class cal extends Applet implements ActionListener{
//------------声明类的成员变量,以便在事件处理时改变其属性------------
Panel pnlbt;
MyImgPanel pnlce;
TextField textf;

//------------通过数组来保存当前4张牌的大小,并由此确定所画的扑克牌------------------
int[] myStatus=new int[4];

public cal()
{
setLayout(new BorderLayout());
pnlce=new MyImgPanel(this);
pnlce.initImg();
add(pnlce,BorderLayout.CENTER);
pnlbt=new Panel();
add(pnlbt,BorderLayout.SOUTH);
Button btnStart=new Button("开始游戏");
Button btnOk=new Button("确定");
textf=new TextField(15);
Label label=new Label("请输入表达式:");
pnlbt.add(btnStart);
pnlbt.add(label);
pnlbt.add(textf);
pnlbt.add(btnOk);
btnStart.setActionCommand("start");
//----------注册事件监听器-----------------
btnStart.addActionListener(this);
btnOk.setActionCommand("ok");
//---------注册事件监听器------------------
btnOk.addActionListener(this);

}
//--------对4张扑克牌的状态进行初始化-------------------
public void init()
{
for(int i=0;i<4;i++)
{
myStatus =0;
}
}

public void actionPerformed(ActionEvent evt)
{
//-----------按下开始按钮时所发生的事件----------------
if(evt.getActionCommand().equals("start"))
{
for(int i=0;i<4;i++)
{
//-------随机产生4张扑克牌--------------
myStatus =(int)(Math.random()*13)+1;
}
pnlce.repaint();

}
//-------按下确定按钮时所发生的事件-----------------------
else if(evt.getActionCommand().equals("ok"))
{

try
{
int result=calculateString(textf.getText().trim());
if(result==-1)
{
textf.setText("");
textf.requestFocus();
new MsgDlg("你输入的表达式不合法,请重新输入!");
}
else if(result!=24)
{
textf.setText("");
textf.requestFocus();
new MsgDlg("你输入的表达式的值为"+result+",请重新输入!");
}
else if(result==24)
{
textf.requestFocus();
new MsgDlg("祝贺你,你的输入正确!");
for(int i=0;i<4;i++)
{
myStatus =(int)(Math.random()*13)+1;
}
pnlce.repaint();
textf.setText("");
textf.requestFocus();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public int calculateString(String str)
{

//------ 判断表达式是否合法------

int[] numbers=new int[4];
String[] operators=new String[4];
for(int i=0;i<4;i++)
{
operators ="";
}

String tempStr,myString="";
int numberNo=0,operatorNo=0;
for(int i=0;i<str.length();i++)
{
tempStr=str.substring(i,i+1);
if(isNumber(tempStr))
{
myString+=tempStr;
}
else if(isOperator(tempStr))
{
if(numberNo>=4 || operatorNo>=3)return -1;
try
{
numbers[numberNo]=Integer.parseInt(myString);
}
catch(Exception e)
{
}
myString="";
numberNo++;
operators[operatorNo]=tempStr;
operatorNo++;
}
else
{
return -1;
}
}
if(myString.length()!=0 && numberNo==3)
{
try
{
numbers[numberNo]=Integer.parseInt(myString);
}
catch(Exception e)
{
return -1;
}
}
else return -1;
//---------判断表达式的数字跟扑克牌上的数字是否一样-------------
int tempStatus[]=new int[4];
for(int i=0;i<4;i++)
{
tempStatus =myStatus ;
}
for(int i=0;i<4;i++)
{
int j=0;
boolean existed=false;
while(j<4 && !existed)
{
if(tempStatus[j]==numbers )
{
tempStatus[j]=-1;
existed=true;
}
j++;
}
if(!existed)return -1;
}
//-------计算所输入的表达式的值-----------------------
int result=numbers[0];
for(int i=0;i<3;i++)
{
if(operators .equals("+"))
{
result+=numbers[i+1];
}
else if(operators .equals("-"))
{
result-=numbers[i+1];
}
else if(operators .equals("*"))
{
result*=numbers[i+1];
}
else if(operators .equals("/"))
{
result/=numbers[i+1];
}
}
return result;
}
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;
}
}
}
class MyImgPanel extends Panel
{
final int IMGSIZE=100;
Image[] myImage=new Image[14];
cal mycal24;

//----------装载上图片--------------------
public MyImgPanel(cal cal24)
{
mycal24=cal24;
}
public void initImg()
{

URL url=null;
try
{
url=Class.forName("cal").getResource("img/back.JPG");
}
catch(Exception e){e.printStackTrace();}
myImage[0]=getToolkit().getImage(url);
for(int i=1;i<=13;i++)
{
try
{
url=Class.forName("cal").getResource("img/"+i+".JPG");
System.out.println(url.toString());
}
catch(Exception e){}
myImage =getToolkit().getImage(url);
}

MediaTracker mt=new MediaTracker(this);
for(int i=0;i<=13;i++)
{
mt.addImage(myImage ,i);
}
try{
mt.wait();
mt.checkAll();
}
catch(Exception e){}
}
public void paint(Graphics g)
{
for(int i=0;i<4;i++)
{
g.drawImage(myImage[mycal24.myStatus ],i*IMGSIZE+5,5,this);
}
}
}
//-------------继承Frame类以实现显示的结果用JAVA表现出来------------------
class MsgDlg extends Frame implements ActionListener
{
Label label=new Label();
public MsgDlg(String strMsg)
{
super();
setTitle("表达式结果");
Panel p=new Panel();
add(p);
p.add(label);
label.setText(strMsg);
setSize(200,100);
setLocation(400,300);
Button btnOk=new Button("确定");
btnOk.addActionListener(this);
p.add(btnOk);
//-----显示对话框---------------
show();
}
public void actionPerformed(ActionEvent evt)
{
//------------隐藏对话框----------
this.dispose();
}
}