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

📄 bone.java

📁 是一本开发J2ME程序的50个例题的源代码
💻 JAVA
字号:
package demo;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;


public class Bone {
	//定义牌面符号种类值
	public static final int WORD_WAN		= 0;	//万
	public static final int WORD_TONG		= 1;	//筒
	public static final int WORD_TIAO		= 2;	//条
	public static final int WORD_ZI		= 3;	//字
	public static final int WORD_TYPE_NUM	= 4;	//字的类型总数
	private int m_nWord = WORD_WAN;	
	
	//定义牌面面值的值
	public static final int VALUE_1		= 0;	//1
	public static final int VALUE_2		= 1;	//2
	public static final int VALUE_3		= 2;	//3
	public static final int VALUE_4		= 3;	//4
	public static final int VALUE_5		= 4;	//5
	public static final int VALUE_6		= 5;	//6
	public static final int VALUE_7		= 6;	//7
	public static final int VALUE_8		= 7;	//8
	public static final int VALUE_9		= 8;	//9
	public static final int VALUE_EAST	= 0;	//东风
	public static final int VALUE_SOUTH	= 1;	//南风
	public static final int VALUE_WEST	= 2;	//西风
	public static final int VALUE_NORTH	= 3;	//北风
	public static final int VALUE_ZHONG	= 4;	//红中
	public static final int VALUE_FA		= 5;	//发财
	public static final int VALUE_BAI		= 6;	//白板
	private int m_nValue = VALUE_1;
	
	//定义牌的状态值
	public static final int BASE_FRONT	= 0;	//正面朝向屏幕立着
	public static final int BASE_BACK		= 1;	//背面朝向屏幕立着
	public static final int BASE_FALL_F	= 2;	//正面朝上倒着
	public static final int BASE_FALL_B	= 3;	//背面朝上倒着
	public static final int BASE_STATE_NUM = 4;	//牌底的状态总数
	private int m_nBase = BASE_FRONT;
	
	private Sprite m_WordSp;						//牌字图像对象
	private Sprite m_BaseSp;						//牌底图像对象
	
	//构造方法,参数wordImg为牌字图像,参数baseImage为牌底图像
	public Bone( Image wordImg, Image baseImg ){
		try{
			m_WordSp = new Sprite(wordImg, 11, 13 );
			m_WordSp.defineReferencePixel(5, 6);
			m_BaseSp = new Sprite(baseImg, 13, 18 );
			m_BaseSp.defineReferencePixel(6, 9);
		}
		catch(Exception exception){}
	}
	//设置牌的位置
	public void setRefPixelPosition( int x, int y ){
		m_BaseSp.setRefPixelPosition(x, y);
		//根据牌的状态,设置文字的位置
		switch( m_nBase ){
		case BASE_FRONT:
			m_WordSp.setRefPixelPosition(x-1, y+1);
			break;
		case BASE_FALL_F:
			m_WordSp.setRefPixelPosition(x, y-1);
			break;
		}
	}
	public int getBase(){
		return m_nBase;
	}
	public int getWord(){
		return m_nWord;
	}
	public int getValue(){
		return m_nValue;
	}
	//设置牌的状态
	public void setState( int state ){
		//检测base的合法性
		if( state < 0 || state >= BASE_STATE_NUM )
			return;
		m_nBase = state;
		int x = m_BaseSp.getRefPixelX();
		int y = m_BaseSp.getRefPixelY();
		m_BaseSp.setFrame(m_nBase);
		//根据牌的状态,设置文字的位置
		switch( m_nBase ){
		case BASE_FRONT:
			m_WordSp.setRefPixelPosition(x, y+1);
			break;
		case BASE_FALL_F:
			m_WordSp.setRefPixelPosition(x, y-1);
			break;
		}
	}
	//设置牌的类型
	//参数base为牌的状态,word为文字类型,value为面值
	public void setType( int word, int value ){
		//检测word,value的合法性
		
		if( word < 0 || word >= WORD_TYPE_NUM )
			return;
		if( word == WORD_ZI ){
			if( value < VALUE_EAST || value > VALUE_BAI )
				return;
		}
		else if( value < VALUE_1 || value > VALUE_9 )
			return;
		//设置数值
		m_nWord		= word;
		m_nValue	= value;
		m_WordSp.setFrame(m_nWord * 9 + m_nValue);
	}
	//显示图像,参数g对应手机屏幕
	public void Paint(Graphics g){
		m_BaseSp.paint(g);
		switch( m_nBase ){
		case BASE_FRONT:
		case BASE_FALL_F:
			//只有正面朝上或朝前的牌才显示文字
			m_WordSp.paint(g);
			break;
		}
	}
}

⌨️ 快捷键说明

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