📄 活动方块.java
字号:
//package 方块;
/**
活动方块.java
功能:当前方块对象的类
@author Joedan hongguangming@sohu.com
*/
import java.awt.*;
class 活动方块
{
private static int 建筑物宽 = 建筑体.建筑物宽;
private static int 建筑物长 = 建筑体.建筑物长;
private static int 颜色数 = 6;
private static Color [] 颜色序列 = {Color.orange, Color.magenta, Color.red,
Color.green, Color.cyan, Color.blue};
private int 当前颜色;//记录当前在颜色序列中所指向的值
private static int 方块种类 = 5;
private static 方块 [] 方块序列 = new 方块[方块种类];
private int 当前方块;//记录当前在方块序列中所指向的值
//初始化各种方块
static{
二维布尔型数组 形状序列;
//第一种方块
// ****
方块序列[0] = new 方块();
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(2, 0, true);
形状序列.设置元素(3, 0, true);
方块序列[0].设置形状序列(0, 形状序列);
方块序列[0].设置形状序列(2, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(0, 2, true);
形状序列.设置元素(0, 3, true);
方块序列[0].设置形状序列(1, 形状序列);
方块序列[0].设置形状序列(3, 形状序列);
//第二种方块
// **
// **
方块序列[1] = new 方块();
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(1, 1, true);
方块序列[1].设置形状序列(0, 形状序列);
方块序列[1].设置形状序列(1, 形状序列);
方块序列[1].设置形状序列(2, 形状序列);
方块序列[1].设置形状序列(3, 形状序列);
//第三种方块
// * ** *** *
// *** * * **
方块序列[2] = new 方块();
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(1, 2, true);
方块序列[2].设置形状序列(0, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(2, 0, true);
形状序列.设置元素(0, 1, true);
方块序列[2].设置形状序列(1, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(0, 2, true);
形状序列.设置元素(1, 2, true);
方块序列[2].设置形状序列(2, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(2, 1, true);
形状序列.设置元素(2, 0, true);
方块序列[2].设置形状序列(3, 形状序列);
//第四种方块
// * * *** **
// *** ** * *
方块序列[3] = new 方块();
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 2, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(1, 2, true);
方块序列[3].设置形状序列(0, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(2, 0, true);
形状序列.设置元素(2, 1, true);
方块序列[3].设置形状序列(1, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(0, 2, true);
形状序列.设置元素(1, 0, true);
方块序列[3].设置形状序列(2, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(2, 1, true);
形状序列.设置元素(0, 0, true);
方块序列[3].设置形状序列(3, 形状序列);
//第五种方块
// * * *** *
// *** ** * **
方块序列[4] = new 方块();
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(1, 2, true);
方块序列[4].设置形状序列(0, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(1, 0, true);
形状序列.设置元素(2, 0, true);
形状序列.设置元素(1, 1, true);
方块序列[4].设置形状序列(1, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 0, true);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(0, 2, true);
形状序列.设置元素(1, 1, true);
方块序列[4].设置形状序列(2, 形状序列);
形状序列 = new 二维布尔型数组(方块.方块长度, 方块.方块高度);
形状序列.设置元素(0, 1, true);
形状序列.设置元素(1, 1, true);
形状序列.设置元素(2, 1, true);
形状序列.设置元素(1, 0, true);
方块序列[4].设置形状序列(3, 形状序列);
}
private int x, y;//当前方块的坐标
private int 当前形状序列;//当前方块的形状,每种方块有(方块.形状种类)种形状序列
public 活动方块()
{
//每个活动方块都有随机的颜色,形状
当前颜色 = (int)(Math.random() * 颜色数);
当前方块 = (int)(Math.random() * 方块种类);
当前形状序列 = (int)(Math.random() * 方块.形状种类);
//设置活动方块的初始位置
x = 建筑物宽 / 2;
y = 0;
}//
public int 取得x坐标()
{
return x;
}
public int 取得y坐标()
{
return y;
}
public Point 取得当前坐标()
{
return new Point(x, y);
}//
public 二维布尔型数组 取得当前形状序列()
{
return 方块序列[当前方块].取得形状序列(当前形状序列);
}//
public Color 取得颜色()
{
return 颜色序列[当前颜色];
}//
public void 下移()
{
y++;
}//
public void 左移()
{
x--;
}//
public void 右移()
{
x++;
}
public void 变形()
{
当前形状序列 = (当前形状序列 + 1) % 方块.形状种类;
}//
//画块
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);
}//
//在指定区域中,方块的当前坐标画出
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, (x + j) * 块宽, (y + i) * 块高, 块宽, 块高, 颜色序列[当前颜色]);
}//
//在指定区域画出,充满整个区域
public void paintIn(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 * 块高, 块宽, 块高, 颜色序列[当前颜色]);
}//
public static void main(String args[])
{
方块序列[0].取得形状序列(0).列印();
方块序列[0].取得形状序列(1).列印();
方块序列[0].取得形状序列(2).列印();
方块序列[0].取得形状序列(3).列印();
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -