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

📄 numbermidlet.java

📁 J2ME手机游戏50例
💻 JAVA
字号:
import java.util.Random;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class NumberMidlet extends MIDlet implements CommandListener {

	public Form m_Form;								//对话框
	public TextField m_TFInput;						//文本编辑框
	public StringItem m_strItem;					//文本显示组件
	public int m_aNum[];							//存储目标数
	public int m_nTimes = 0;						//输入的次数
	public boolean m_bEndGame = false;			//游戏结束的标志
	private Command OKCommand;						//高级指令
	public NumberMidlet() {
		super();
		m_Form = new Form("猜数字");
		//设置m_TFInput组件,使其只能输入4位数字
		m_TFInput = new TextField("输入","", 4, TextField.NUMERIC );
		m_strItem = new StringItem("反馈","0B0A" );
		m_Form.append(m_TFInput);
		m_Form.append(m_strItem);
		//产生目标数
		m_aNum = new int[4];
		InitNum();
		//创建指令,并设置指令的监听器
		OKCommand = new Command( "输入", Command.OK, 0);
		m_Form.addCommand( OKCommand );
		m_Form.setCommandListener(this);
		
	}
	public void InitNum(){							//产生随机的目标数
		Random random = new Random();
		int k = random.nextInt();
		int m = 0;
		for( int n = 0; n < 4; n ++ ){
			k = random.nextInt();
			m_aNum[n] = Math.abs(k % 10);
			//for循环语句,确保四个数位上的数字无重复
			for( m = 0; m < n; m ++ ){
				//若与前面的数字重复,则用加1的办法保证不重复
				if( m_aNum[n] == m_aNum[m] )
					m_aNum[n] ++;
				//若加1后大于9则回到0
				if( m_aNum[n] > 9 )
					m_aNum[n] = 0;
			}
		}
	}
	protected void startApp() throws MIDletStateChangeException {
		//设置当前屏幕显示的对象
		Display.getDisplay(this).setCurrent(m_Form);
	}
	protected void pauseApp() {
	}
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
	}
	public void commandAction(Command arg0, Displayable arg1) {
		if( m_bEndGame )
			return;
		if (arg0 == OKCommand){						//指令被触发
			char cNum[] = new char[4];
			m_TFInput.getChars(cNum);
			if( !CheckNumber( cNum ) )
			{//如果输入数不合法
				m_strItem.setText(null);
				m_TFInput.setChars(null, 0, 0);
				m_strItem.setText("非法数字");
				return;		
			}
			FeedBack(cNum);							//反馈信息
		}
	}
	public boolean CheckNumber( char cNum[] ){	//检测数据是否合法
		if( cNum.length != 4 )
			return false;
		for( int i = 0; i < 4; i ++ ){
			for( int j = 0; j < i; j ++ ){
				//有两个数字相同了,确定是非法输入
				if( cNum[i] == cNum[j] ){
					return false;
				}
			}
		}
		return true;
	}
	public void FeedBack(char cNum[]){			//根据输入数反馈信息
		if( cNum.length != 4 )
			return;
		
		int nB = 0;									//记录B的个数,即m的值
		int nA = 0;									//记录A的个数,即n的值
		for( int i = 0; i < 4; i ++ ){
			for( int j = 0; j < 4; j ++ ){
				//cNum[i]是字符,需先转换成对应的数字,再与m_aNum[j]进行比较
				if( (int)(cNum[i] - '0') == m_aNum[j] ){
					if( i == j )
						nA ++;						//如果位置也相同,则m的值加1
					else
						nB ++;						//如果位置不相同,则n的值加1
				}
			}
		}
		if( nA == 4 ){								//猜数成功
			m_strItem.setText(null);
			m_strItem.setText("成功");
			m_bEndGame = true;
			return;
		}
		else
			m_nTimes ++;
		if( m_nTimes > 5 ){							//猜数失败					
			m_strItem.setText(null);
			m_strItem.setText("失败");
			m_bEndGame = true;
			return;
		}
		//输出反馈信息
		StringBuffer temp = new StringBuffer();
		temp.append(nB);
		temp.append("B");
		temp.append(nA);
		temp.append("A");
		m_strItem.setText(null);
		m_strItem.setText(temp.toString());	
		m_TFInput.setChars(null, 0, 0);		
	}
}

⌨️ 快捷键说明

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