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

📄 cgame.java

📁 不足千行代码就能实现俄罗斯方块的基本功能。有兴趣的朋友可以把他的功能扩 展下。基础学习不错!
💻 JAVA
字号:



//对GridIn进行整理,加工;控制游戏的开始,结束,得分
public class Cgame{
	
	boolean[][] position;//存放放块位置的相对坐标
	boolean[][] position2;//提示框方块坐标
	int[][][] init_selectx={//初始化方块
	    	{{4,5,5,6},  {5,5,6,5},  {6,5,5,4},  {5,5,4,5}},  //1-T
	    	{{4,5,5,6},  {5,5,6,6},  {6,5,5,4},  {6,6,5,5}},  //1-Z
	    	{{4,5,5,6},  {6,6,5,5},  {6,5,5,4},  {5,5,6,6}},  //1-Z'
	    	{{5,5,5,6},  {4,5,6,6},  {6,6,6,5},  {6,5,4,4}},  //1-L
	    	{{4,5,5,5},  {6,6,5,4},  {6,5,5,5},  {4,4,5,6}},  //1-L'
	    	{{5,5,5,5},  {4,5,6,7},  {5,5,5,5},  {7,6,5,4}},  //1-I  
	    	{{5,5,6,6},  {5,6,6,5},  {6,6,5,5},  {6,5,5,4}}   //1-O
	    };
	    
    int[][][] init_selecty={
	    	{{3,3,4,3},  {4,3,3,2},  {4,4,3,4},  {2,3,3,4}},  //1-T
	    	{{3,3,4,4},  {4,3,3,2},  {4,4,3,3},  {2,3,3,4}},  //1-Z
	    	{{4,4,3,3},  {4,3,3,2},  {3,3,4,4},  {2,3,3,4}},  //1-Z'
	    	{{2,3,4,4},  {4,4,4,3},  {4,3,2,2},  {3,3,3,4}},  //1-L
	    	{{4,4,3,2},  {4,3,3,3},  {2,2,3,4},  {3,4,4,4}},  //1-L'
	    	{{1,2,3,4},  {4,4,4,4},  {4,3,2,1},  {4,4,4,4}},  //1-I
	    	{{3,4,4,3},  {4,4,3,3},  {4,3,3,4},  {3,3,4,4}}   //1-O
	    };
	
	public Cgame(){
		
		position=new boolean[24][10];
		position2=new boolean[4][4];
	}
	
	public void startGame(GridIn grid){};//开始游戏
	public void endGame(GridIn grid){};//结束游戏
	
	public boolean isGameFail(){//如果游戏失败,返回true
		
		boolean game=false;
		
		for(int j=0;j<10;j++){
			if(position[4][j]==true){
				game=true;
			}
		}
		
		return game;
	}
	
	public void setFullLine(Linefull line){//每次循环调用一次,设置满行line的属性
	
	    int flag;//记录每行小方块个数
	    
	    for(int i=0;i<24;i++){
	    	flag=0;       
	    	for(int j=0;j<10;j++){
	    		if(position[i][j]==true){
	    			flag++;
	    		}
	    		
	    		if(flag>=10){//该行为满行
	    			line.setFullRow(i);
	    			line.full=0;
	    			for(int t=0;t<24;t++){
	    				if(line.lineFullRow[t]==true){
	    				line.full=line.full+1;//加分	
	    				}
	    			}
	    		}
	    	}
	    }
	}
	
	public boolean freshGame(Linefull line){//删除满行,刷新界面
		    boolean boo=false;
			if(line.lineFullRow[0]==true){//若第一行为满行
				for(int p1=0;p1<10;p1++){
					position[0][p1]=false;
				}
				
				boo=true;
			}
			else{//满行不是第一行
			    for(int t=1;t<24;t++){
			    	if(line.lineFullRow[t]==true){//若第(t+1)行为满行
			    	    for(int at=t;at>=1;at--){//删除第(t+1)行
			    	    	for(int ai=0;ai<10;ai++){
			    	    		position[at][ai]=position[at-1][ai];
			    	    	}
			    	    }
			    	    
			    	    boo=true;
			    	}
			    }
			}
			
			return boo;	
	}
	
	public GridIn selectGrid(){//随机选取对象并放到position[][]中
	    	    	    
	    GridIn grid=new GridIn();
 	    grid.grid_type=(int)(Math.random()*7)+1; //取7种形式中的一种	  
  	    grid.grid_angle=(int)(Math.random()*4)+1; //取4种形式中的一种    	    	   
	    return grid;
	}
	
	public void reset_position(GridIn grid){
		for(int i=0;i<4;i++){
	   	    grid.grid_x[i]=init_selectx[grid.grid_type-1][grid.grid_angle-1][i];
	    	grid.grid_y[i]=init_selecty[grid.grid_type-1][grid.grid_angle-1][i];
	    	position[grid.grid_y[i]-1][grid.grid_x[i]-1]=true;
	    }
	}
	
	public void reset_position2(GridIn grid){
		
		for(int i1=0;i1<4;i1++){
	    	for(int j=0;j<4;j++){
	    		position2[i1][j]=false;
	    	}
	   	}	
	   	for(int i=0;i<4;i++){
	    	grid.grid_x[i]=init_selectx[grid.grid_type-1][grid.grid_angle-1][i];
	    	grid.grid_y[i]=init_selecty[grid.grid_type-1][grid.grid_angle-1][i]; 
	    	position2[grid.grid_y[i]-1][grid.grid_x[i]-4]=true;
	    }	
	}
	
}

⌨️ 快捷键说明

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