📄 bone.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 + -