📄 建筑体.java
字号:
//package 方块;
/**
建筑体.java
功能:记录方块堆积情况的对象的类
@author Joedan hongguangming@sohu.com
*/
import java.awt.*;
class 建筑体
{
public static int 建筑物宽 = 12;
public static int 建筑物长 = 20;
private 二维布尔型数组 数据 = new 二维布尔型数组(建筑物长, 建筑物宽);
private 二维Color数组 颜色 = new 二维Color数组(建筑物长, 建筑物宽);
public boolean 取得位置状态(int 行号, int 列号)
{
if (行号 < 0 || 行号 >= 建筑物长 ||
列号 < 0 || 列号 >= 建筑物宽)//元素位置不合法,返回false
return false;
return 数据.取得元素(行号, 列号);
}
public Color 取得位置颜色(int 行号, int 列号)
{
if (行号 < 0 || 行号 >= 建筑物长 ||
列号 < 0 || 列号 >= 建筑物宽)//元素位置不合法,返回null
return null;
return 颜色.取得元素(行号, 列号);
}
//*
public void 设置位置状态(int 行号, int 列号, boolean 状态值)
{
if (行号 < 0 || 行号 >= 建筑物长 ||
列号 < 0 || 列号 >= 建筑物宽)//元素位置不合法,直接返回
return;
数据.设置元素(行号, 列号, 状态值);
}
public void 设置位置颜色(int 行号, int 列号, Color 颜色值)
{
if (行号 < 0 || 行号 >= 建筑物长 ||
列号 < 0 || 列号 >= 建筑物宽)//元素位置不合法,直接返回
return;
颜色.设置元素(行号, 列号, 颜色值);
}//
//*/
public void 删除某行(int 行号)
{
if (行号 < 0 || 行号 >= 建筑物长)//行号不合法,直接返回
return;
//数据.列印();颜色.列印();
数据._删除某行(行号);
颜色._删除某行(行号);
//数据.列印();颜色.列印();
}//
public int 取得行数()
{
return 建筑物长;
}//
public int 取得列数()
{
return 建筑物宽;
}//
//将停止运动的活动方块加入建筑体
public void 加入方块(活动方块 方块数据)
{
//取得赖以修改建筑体内容的数据
二维布尔型数组 当前形状序列数据 = 方块数据.取得当前形状序列();
//遍历活动方块,按非空块的位置设置建筑体的内容
for (int i = 0; i < 方块.方块长度; i++)
for (int j = 0; j < 方块.方块高度; j++)
if (当前形状序列数据.取得元素(i, j))
{
数据.设置元素(方块数据.取得y坐标() + i, 方块数据.取得x坐标() + j, true);
颜色.设置元素(方块数据.取得y坐标() + i, 方块数据.取得x坐标() + j, 方块数据.取得颜色());
}
}//
//画块
private void 画块(Graphics g, int x, int y, int width, int height, Color color)
{
//横间段大小
int w = width / 6;
//竖间段大小
int h = height / 6;
//准备画笔颜色
g.setColor(color);
g.fill3DRect(x, y, width, height, true);
g.fill3DRect(x + w, y + h, width - 2 * w, height - 2 * h, true);
g.fill3DRect(x + 2 * w, y + 2 * h, width - 4 * w, height - 4 * h, true);
}//
//在g中画出建筑体
public void paint(Graphics g)
{
//取得块的大小参数
int 块宽 = (int)(g.getClipBounds().getWidth() / 建筑物宽),
块高 = (int)(g.getClipBounds().getHeight() / 建筑物长);
//画方块;遍历整个建筑体,将有块的位置用相应的颜色画出
for (int i = 0; i < 建筑物长; i++)//遍历行
for (int j = 0; j < 建筑物宽; j++)//遍历列
if (数据.取得元素(i, j))//该位置是否有块
画块(g, j * 块宽, i * 块高, 块宽, 块高, 颜色.取得元素(i, j));//画块
}//
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -