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

📄 cal24.java

📁 JAVA的小游戏或者是对你学JAVA 是很有帮助的 你下下看看就晓得了
💻 JAVA
字号:
import java.applet.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Cal24 extends Applet implements ActionListener
{
	Panel m_pBottom;
	PicPanel m_pCenter;
	TextField m_txField;
	
	int[] m_nStatus=new int[4];
	
	public Cal24()
	{
		setLayout(new BorderLayout());
		m_pCenter=new PicPanel(this);
		m_pCenter.initImg();
		add(m_pCenter,BorderLayout.CENTER);
		m_pBottom=new Panel();
		add(m_pBottom,BorderLayout.SOUTH);
		Button btStart=new Button("开始游戏");
		Button btOk=new Button("确定");
		m_txField=new TextField(15);
		Label label=new Label("请输入表达式:");
		m_pBottom.add(btStart);
		m_pBottom.add(label);
		m_pBottom.add(m_txField);
		m_pBottom.add(btOk);
		btStart.setActionCommand("start");
		btStart.addActionListener(this);
		btOk.setActionCommand("ok");
		btOk.addActionListener(this);
		
	}
	public void init()
	{
		for(int i=0;i<4;i++)
		{
			m_nStatus[i]=0;
		}
	}
	
	public void actionPerformed(ActionEvent evt)
	{
		/**按下开始按钮**/
		if(evt.getActionCommand().equals("start"))
		{
			for(int i=0;i<4;i++)
			{
				m_nStatus[i]=(int)(Math.random()*13)+1;
			}
			m_pCenter.repaint();
			
		}
		/**按下确定按钮**/
		else if(evt.getActionCommand().equals("ok"))
		{
			try
			{
				int result=calString(m_txField.getText().trim());
				if(result==-1)
				{
					m_txField.setText("");
					m_txField.requestFocus();
					new MsgDlg("你输入的表达式不合法,请重新输入!");
				}
				else if(result!=24)
				{
					m_txField.setText("");
					m_txField.requestFocus();
					new MsgDlg("你输入的表达式的值为"+result+",请重新输入!");
				}
				else if(result==24)
				{
					m_txField.requestFocus();
					new MsgDlg("祝贺你,你的输入正确!");
					for(int i=0;i<4;i++)
					{
						m_nStatus[i]=(int)(Math.random()*13)+1;
					}
					m_pCenter.repaint();
					m_txField.setText("");
					m_txField.requestFocus();
				}
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
	}
	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;
	}
	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 PicPanel extends Panel
{
	final int IMG_SIZE=100;
	Image[] m_img=new Image[14];
	Cal24 m_cal24;
	/**Load picture**/
	public PicPanel(Cal24 cal24)
	{
		m_cal24=cal24;
	}
	public void initImg()
	{
		System.out.println("hahahhah");
		URL url=null;
        try
        {
        	url=Class.forName("Cal24").getResource("pic/back.JPG");
        }
        catch(Exception e){e.printStackTrace();}
        m_img[0]=getToolkit().getImage(url);
        for(int i=1;i<=13;i++)
        {
        	try
	        {
	        	url=Class.forName("Cal24").getResource("pic/"+i+".JPG");
	        	System.out.println(url.toString());
	        }
	        catch(Exception e){}
	        m_img[i]=getToolkit().getImage(url);
        }
        
        MediaTracker mt=new MediaTracker(this);
        for(int i=0;i<=13;i++)
        {
        	mt.addImage(m_img[i],i);
    	}
        try{
            mt.wait();
            mt.checkAll();
        }
        catch(Exception e){}
	}
	public void paint(Graphics g)
	{
		for(int i=0;i<4;i++)
		{
			g.drawImage(m_img[m_cal24.m_nStatus[i]],i*IMG_SIZE+5,5,this);
		}
	}
}
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(300,200);
		Button btOk=new Button("确定");
		btOk.addActionListener(this);
		p.add(btOk);
		show();
	}
	public void actionPerformed(ActionEvent evt)
	{
		this.dispose();
	}
}

⌨️ 快捷键说明

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