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

📄 ground.java

📁 自己写的一个Java版本的俄罗斯方块
💻 JAVA
字号:
package lx.entity;

import java.awt.Graphics;

import lx.util.Global;

public class Ground {

	//障碍物数组
	private int[][] obstacles = new int[Global.WIDTH][Global.HIGHT];
	
	//接受图形方法
	public void accept(Shape shape){
		for(int x = 0; x < 4; x++){
			for(int y = 0; y < 4; y++){
				if(shape.isMember(x, y, false)){
					obstacles[shape.getLeft()+x][shape.getTop()+y] = 1;
				}
			}	
		}
		deleteFullLine();
	}
	
	//绘制图形方法
	public void drawMe(Graphics g){
		for(int x = 0; x < Global.WIDTH; x++){
			for(int y = 0; y < Global.HIGHT; y++){
		            if(obstacles[x][y] == 1){
		            	g.fill3DRect(x*Global.CELL_SIZE, 
		            			     y*Global.CELL_SIZE,
		            			     Global.CELL_SIZE,
		            			     Global.CELL_SIZE, true);
		            }
			}	
		}
	}
	
	//判断图形是否可以移动
	public boolean isMoveable(Shape shape,int action){
		int left = shape.getLeft();
		int top  = shape.getTop();
		switch (action) {
		case Shape.LEFT :
			  left--;
			  break;
		case Shape.RIGHT :
			  left++;
			  break;
		case Shape.DOWN :
			  top++;
			  break;
		}
		for(int x = 0; x < 4; x++){
			for(int y = 0; y < 4; y++){
				if(shape.isMember(x, y,action == Shape.ROTATE)){
					if(top + y >= Global.HIGHT ||
							left + x < 0 ||
							left + x >= Global.WIDTH ||
							obstacles[left+x][top+y] == 1){
						return false;
					}
				}
			}
		}
		return true;
	}
	
	//将累积一行满行消除
	private void deleteFullLine(){
		for(int y = Global.HIGHT-1; y >= 0; y--){
			boolean full = true;
			for(int x = 0; x < Global.WIDTH; x++){
				if(obstacles[x][y] == 0){
					full = false;
				}
			}
			if(full){
				deleteLine(y);
			}
		}
	}
	
	//删除行
	private void deleteLine(int lineNUm){
		for(int y = lineNUm; y > 0; y--){
			for(int x = 0; x < Global.WIDTH; x++){
				obstacles[x][y] = obstacles[x][y-1];
			}
		}
		for(int x = 0; x < Global.WIDTH; x++){
			obstacles[x][0] = 0;
		}
		
	}
	
	//结束游戏
	public boolean isFull(){
		for(int x = 0; x < Global.HIGHT; x++){
			if(obstacles[x][0] == 1){
				return true;
			}
		}
		return false;
	}
}

⌨️ 快捷键说明

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