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

📄 playersprite.java

📁 J2ME编程的50个例子,适合掌上系统的编程
💻 JAVA
字号:
package demo;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;


public class PlayerSprite extends Sprite{
	public static final int PLAYER_MM	 	= 0;	//孙小美(玩家)
	public static final int PLAYER_OIL	= 1;	//石油大王(电脑)
	public static final int PLAYER_TYPE_NUM = 2;
	private int m_nMoney;							//金钱数
	private int m_nCol;							//所处位置的列号
	private int m_nRow;							//所处位置的行号
	private int m_nStep;							//移动步数
	public PlayerSprite( Image image, int frameWidth, int frameHeight){
		super(image, frameWidth, frameHeight);		
		defineReferencePixel(frameWidth / 2, frameHeight / 2);
	}
	//设置金钱数
	public void setMoney(int money){
		m_nMoney = money;
	}
	//获取金钱数
	public int getMoney(){
		return m_nMoney;
	}
	//设置位置
	//参数col、row分别是列号与行号,grid是地图格子对象
	public void SetPos( int col, int row, TiledLayer grid){
		if( col < 0 || col >= grid.getColumns() )
			return;
		if( row < 0 || row >= grid.getRows() )
			return;
		m_nCol = col;
		m_nRow = row;
		//设置实际显示的位置
		int x = col * grid.getCellWidth() + grid.getX();
		int y = row * grid.getCellHeight() + grid.getY();
		setPosition( x, y);
	}
	//获取当前所在的列
	public int getCol(){
		return m_nCol;
	}
	//获取当前所在的行
	public int getRow(){
		return m_nRow;
	}
	//设置移动步数
	public void setStep(int step){
		m_nStep = step;
	}
	//获取移动步数
	public int getStep(){
		return m_nStep;
	}
	//逻辑操作,产生移动
	public void Logic(TiledLayer grid){
		if( m_nStep > 0 )
		{
			//移动人物
			MovePlayer(grid);
			m_nStep --;
			//让CPU休息500毫秒
			try{
				Thread.sleep(500);
			}
			catch(InterruptedException ie){
				ie.printStackTrace();
			}
		}
	}
	//移动任务
	private void MovePlayer(TiledLayer grid){
		if( m_nRow == 0 )
		{//如果在最上边的行
			if( m_nCol < grid.getColumns() - 1 )
				SetPos( m_nCol + 1, m_nRow, grid );
			else
				SetPos( m_nCol, m_nRow + 1, grid );
		}
		else if( m_nRow == grid.getRows() - 1 )
		{//如果在最下边的行
			if( m_nCol > 0 )
				SetPos( m_nCol - 1, m_nRow, grid );
			else
				SetPos( m_nCol, m_nRow - 1, grid );
		}
		else if( m_nCol == 0 )		//如果在最左边的列
			SetPos( m_nCol, m_nRow - 1, grid );
		else						//如果在最右边的列
			SetPos( m_nCol, m_nRow + 1, grid );
	}
}

⌨️ 快捷键说明

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