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

📄 brickgroup.java

📁 J2ME编程的50个例子,适合掌上系统的编程
💻 JAVA
字号:
package demo;
import java.util.Random;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.TiledLayer;


public class BrickGroup {
	//方块组合类型
	public static final int BRICK_BAR 		= 0;	//竖条型的方块组合
	public static final int BRICK_L_L			= 1;	//朝左的L型方块组合
	public static final int BRICK_L_R			= 2;	//朝右的L型方块组合
	public static final int BRICK_CORNER_L	= 3;	//朝左的拐弯型方块组合
	public static final int BRICK_CORNER_R	= 4;	//朝右的拐弯型方块组合
	public static final int BRICK_SQUARE		= 5;	//正方形方块组合
	public static final int BRICK_TYPE_NUM 	= 6;	//方块组合种类总数
	private int m_nCurType = BRICK_BAR;				//当前方块组合的类型
	private int m_nNextType = BRICK_BAR;				//下一个方块组合的类型
	
	//方块组合旋转状态
	public static final int ROT_NONE			= 0;	//原始方块组合
	public static final int ROT_90			= 1;	//方块组合旋转90度
	public static final int ROT_180			= 2;	//方块组合旋转180度
	public static final int ROT_270			= 3;	//方块组合旋转270度
	public static final int ROT_STATE_NUM		= 4;	//旋转状态总数
	private int m_nCurRot = ROT_NONE;					//当前方块组合的旋转状态
	private int m_nNextRot = ROT_NONE;					//下一个方块组合的旋转状态
	
	private Random 	m_Random;
	private TiledLayer m_CurTL;						//当前的方块组合形状
	private TiledLayer m_NextTL;						//下一个方块组合形状
	
	//构造方法,参数image是砖块图像
	public BrickGroup( Image image ){
		m_Random 	= new Random();
		m_CurTL 	= new TiledLayer( 4, 4, image, 9, 9);
		m_NextTL 	= new TiledLayer( 4, 4, image, 9, 9);
	}
	//重新设置砖块组合
	public void ResetBrick(){
		RandNextBrick();								//随机设置下一个砖块组合
		NextBricks();									//设置当前的砖块组合
	}
	
	//设置当前的砖块组合
	public void NextBricks(){
		//将下一个砖块组合幅
		for( int row = 0; row < 4; row ++ ){
			for( int col = 0; col < 4; col ++ ){
				int index = m_NextTL.getCell(col, row);
				m_CurTL.setCell(col, row, index);
			}
		}
		m_nCurType	= m_nNextType;
		m_nCurRot 	= m_nNextRot;
		RandNextBrick();
	}
	//获取当前的砖块组合
	public TiledLayer getCurBrick(){
		return m_CurTL;
	}
	//获取下一个砖块组合
	public TiledLayer getNextBrick(){
		return m_NextTL;
	}
	//旋转砖块组合
	//参数bClockwise为true表示顺时针旋转,否则逆时针旋转
	public void RotCurBrick( boolean bClockwise ){
		if( bClockwise )
			m_nCurRot ++;
		else
			m_nCurRot --;
		
		if( m_nCurRot < 0 )
			m_nCurRot = ROT_STATE_NUM - 1;
		if( m_nCurRot >= ROT_STATE_NUM )
			m_nCurRot = 0;
		
		switch(m_nCurType){
		case BRICK_BAR:							//设置条型组合
			setBarBrick( m_nCurRot, m_CurTL );
			break;
		case BRICK_L_L:							//设置左L型组合
			setLLBrick( m_nCurRot, m_CurTL );
			break;
		case BRICK_L_R:							//设置右L型组合
			setLRBrick( m_nCurRot, m_CurTL );
			break;
		case BRICK_CORNER_L:					//设置左弯型组合
			setCornerLBrick( m_nCurRot, m_CurTL );
			break;
		case BRICK_CORNER_R:					//设置右弯型组合
			setCornerRBrick( m_nCurRot, m_CurTL );
			break;
		case BRICK_SQUARE:						//设置方型组合
			setSquareBrick( m_nCurRot, m_CurTL );
			break;
		}
	}
	//随机设置下一个方块组合
	private void RandNextBrick(){
		m_nNextType = m_Random.nextInt() % BRICK_TYPE_NUM;
		m_nNextType = Math.abs(m_nNextType);
		m_nNextRot	= m_Random.nextInt() % ROT_STATE_NUM;
		m_nNextRot	= Math.abs(m_nNextRot);
		switch(m_nNextType){
		case BRICK_BAR:							//设置条型组合
			setBarBrick( m_nNextRot, m_NextTL );
			break;
		case BRICK_L_L:							//设置左L型组合
			setLLBrick( m_nNextRot, m_NextTL );
			break;
		case BRICK_L_R:							//设置右L型组合
			setLRBrick( m_nNextRot, m_NextTL );
			break;
		case BRICK_CORNER_L:					//设置左弯型组合
			setCornerLBrick( m_nNextRot, m_NextTL );
			break;
		case BRICK_CORNER_R:					//设置右弯型组合
			setCornerRBrick( m_nNextRot, m_NextTL );
			break;
		case BRICK_SQUARE:						//设置方型组合
			setSquareBrick( m_nNextRot, m_NextTL );
			break;
		}
	}
	//设置条型组合
	//参数rot为旋转状态,TL为组合容器
	private void setBarBrick( int rot, TiledLayer TL ){
		switch(rot){
		case ROT_NONE:
		case ROT_180:
			TL.setCell(0,0, 0); TL.setCell(1,0, 1); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 1); TL.setCell(2,1, 0); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 1); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 1); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_90:
		case ROT_270:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 1); TL.setCell(1,1, 1); TL.setCell(2,1, 1); TL.setCell(3,1, 1);
			TL.setCell(0,2, 0); TL.setCell(1,2, 0); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		}
	}
	//设置左L型组合
	//参数rot为旋转状态,TL为组合容器
	private void setLLBrick( int rot, TiledLayer TL ){
		switch(rot){
		case ROT_NONE:
			TL.setCell(0,0, 0); TL.setCell(1,0, 2); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 2); TL.setCell(2,1, 0); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 2); TL.setCell(2,2, 2); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_90:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 2); TL.setCell(2,1, 2); TL.setCell(3,1, 2);
			TL.setCell(0,2, 0); TL.setCell(1,2, 2); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_180:
			TL.setCell(0,0, 0); TL.setCell(1,0, 2); TL.setCell(2,0, 2); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 0); TL.setCell(2,1, 2); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 0); TL.setCell(2,2, 2); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_270:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 0); TL.setCell(2,1, 2); TL.setCell(3,1, 0);
			TL.setCell(0,2, 2); TL.setCell(1,2, 2); TL.setCell(2,2, 2); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		}
	}
	//设置右L型组合
	//参数rot为旋转状态,TL为组合容器
	private void setLRBrick( int rot, TiledLayer TL ){
		switch(rot){
		case ROT_NONE:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 3); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 0); TL.setCell(2,1, 3); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 3); TL.setCell(2,2, 3); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_90:
			TL.setCell(0,0, 3); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 3); TL.setCell(1,1, 3); TL.setCell(2,1, 3); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 0); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_180:
			TL.setCell(0,0, 0); TL.setCell(1,0, 3); TL.setCell(2,0, 3); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 3); TL.setCell(2,1, 0); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 3); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_270:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 3); TL.setCell(1,1, 3); TL.setCell(2,1, 3); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 0); TL.setCell(2,2, 3); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		}
	}
	//设置左弯型组合
	//参数rot为旋转状态,TL为组合容器
	private void setCornerLBrick( int rot, TiledLayer TL ){
		switch(rot){
		case ROT_NONE:
		case ROT_180:
			TL.setCell(0,0, 0); TL.setCell(1,0, 4); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 4); TL.setCell(2,1, 4); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 0); TL.setCell(2,2, 4); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_90:
		case ROT_270:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 0); TL.setCell(2,1, 4); TL.setCell(3,1, 4);
			TL.setCell(0,2, 0); TL.setCell(1,2, 4); TL.setCell(2,2, 4); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		}
	}
	//设置右弯型组合
	//参数rot为旋转状态,TL为组合容器
	private void setCornerRBrick( int rot, TiledLayer TL ){
		switch(rot){
		case ROT_NONE:
		case ROT_180:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 5); TL.setCell(3,0, 0);
			TL.setCell(0,1, 0); TL.setCell(1,1, 5); TL.setCell(2,1, 5); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 5); TL.setCell(2,2, 0); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		case ROT_90:
		case ROT_270:
			TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
			TL.setCell(0,1, 5); TL.setCell(1,1, 5); TL.setCell(2,1, 0); TL.setCell(3,1, 0);
			TL.setCell(0,2, 0); TL.setCell(1,2, 5); TL.setCell(2,2, 5); TL.setCell(3,2, 0);
			TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
			break;
		}
	}
	//设置方型组合
	//参数rot为旋转状态,TL为组合容器
	private void setSquareBrick( int rot, TiledLayer TL ){
		TL.setCell(0,0, 0); TL.setCell(1,0, 0); TL.setCell(2,0, 0); TL.setCell(3,0, 0);
		TL.setCell(0,1, 0); TL.setCell(1,1, 6); TL.setCell(2,1, 6); TL.setCell(3,1, 0);
		TL.setCell(0,2, 0); TL.setCell(1,2, 6); TL.setCell(2,2, 6); TL.setCell(3,2, 0);
		TL.setCell(0,3, 0); TL.setCell(1,3, 0); TL.setCell(2,3, 0); TL.setCell(3,3, 0);
	}
}

⌨️ 快捷键说明

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