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

📄 活动方块.java

📁 为移动电话写的俄罗斯方块游戏,没什么特别的,模块化设计是本程序的特色,也是我至今保留着它的原因,当时让我兴奋不已,得益于模块化设计,该程序的编写和改动都非常快捷,我只用了几个小时就完成编写和后期改动,
💻 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 + -