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

📄 gameblock.java

📁 手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package russiangame;

import java.util.Random;

import javax.microedition.lcdui.Graphics;

/**
 * <p>Title: 俄罗斯方块</p>
 *
 * <p>Description: 俄罗斯方块游戏</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: Star Group</p>
 *
 * @author: Part of this programe comes from a open-source project in the Web(www.hyweb.net).
 *          Our group makes some remakeble improvement to it.
 * @version 1.0
 */
public class GameBlock {
    public static final short MOVE_LEFT = 1;  //左移
    public static final short MOVE_RIGHT = 2; //右移
    /**各种砖块,1-7为活动砖块颜色,8为墙砖颜色
     * <code>BRICK_COLORS</code> 的注释
     */
    public static final int[] BRICK_COLORS = {
                                             0x00FF0000, 0x0000FF00, 0x00FFFF00,
                                             0x000000FF, 0x00FF00FF, 0x0000FFFF,
                                             0x00C0C0C0, 0x00808080};

    //7个下坠物数组,第一维rot为旋转值, 第二维x为行(12),第三维y为列(16)
    //即4个大模块为4种可能的出现姿态

    /** "田"
     */
    protected int block_tian[][][] = { { {
                                        0, 0, 0, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 0, 0}
    }
    };

    /** 反"L"
     */
    protected int block_reverse_L[][][] = { { {
                                        0, 0, 1, 0}
                                        , {
                                        0, 0, 1, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 1, 1, 1}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 1, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            1, 1, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 0, 0}
    }
    };

    /** 正"L"
     */
    protected int block_L[][][] = { { {
                                        0, 1, 0, 0}
                                        , {
                                        0, 1, 0, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 1}
            , {
            0, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 1, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 0, 1, 0}
            , {
            1, 1, 1, 0}
            , {
            0, 0, 0, 0}
    }
    };

    /** "l"
     */
    protected int block_I[][][] = { { {
                                        0, 0, 1, 0}
                                        , {
                                        0, 0, 1, 0}
                                        , {
                                        0, 0, 1, 0}
                                        , {
                                        0, 0, 1, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 0, 0, 0}
            , {
            1, 1, 1, 1}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 1, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 0, 0, 0}
            , {
            1, 1, 1, 1}
            , {
            0, 0, 0, 0}
    }
    };

    /** 正"乙"
     */
    protected int block_Z[][][] = { { {
                                        0, 0, 0, 0}
                                        , {
                                        1, 1, 0, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 0, 1, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            1, 1, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 1, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
    };

    /** 反"乙"
     */
    protected int block_reverse_Z[][][] = { { {
                                        0, 0, 0, 0}
                                        , {
                                        0, 1, 1, 0}
                                        , {
                                        1, 1, 0, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 1, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 0, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            1, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 1, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 0, 1, 0}
            , {
            0, 0, 0, 0}
    }
    };

    /** "丁"
     */
    protected int block_T[][][] = { { {
                                        0, 0, 0, 0}
                                        , {
                                        1, 1, 1, 0}
                                        , {
                                        0, 1, 0, 0}
                                        , {
                                        0, 0, 0, 0}
    }
            , { {
            0, 1, 0, 0}
            , {
            1, 1, 0, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 1, 0, 0}
            , {
            1, 1, 1, 0}
            , {
            0, 0, 0, 0}
            , {
            0, 0, 0, 0}
    }
            , { {
            0, 1, 0, 0}
            , {
            0, 1, 1, 0}
            , {
            0, 1, 0, 0}
            , {
            0, 0, 0, 0}
    }
    };

    private int blockNow[][][]; //当前坠物
    private int blockNext[][]; //下一个坠物,不需要旋转参数,即2维足够

    /** blockpattern左上角x坐标,x=i表示左上角距离游戏容器左上角x轴上i个小砖块单位
     */
    private int xBrick;

    /** blockpattern左上角y坐标,y=i表示左上角距离游戏容器左上角y轴上i个小砖块单位
     */
    private int yBrick;

    private int oldXBrick; //xBrick的旧值
    private int oldYBrick; //yBrick的旧值

    private int rot; //旋转值  0~3
    private int oldRot; //rot旧值

    private int nBrickIDNow; //组成当前坠物所用小砖块id(1-7),同时也表示一种下坠物形状 (因为程序中一种坠物只对应一种砖块)
    private int nBrickIDNext; //组成下一个坠物所用小砖块id(1-7),同时也表示一种下坠物形状 (因为程序中一种坠物只对应一种砖块)

    protected Random rand;
    private GameMap map;

    public GameBlock(GameMap map) {
        this.map = map;
        rand = new Random(System.currentTimeMillis());

        //随即生成值在1~7之间的小砖块(也生成了下坠物)
        this.nBrickIDNext = Math.abs(rand.nextInt() % 7) + 1;
    }

    /** 设置blockNow的内容
     * @param nowBlock
     */
    public void setCurrentBrick(int[][][] nowPattern) {
        this.blockNow = new int[4][4][4];
        for (int i = 0; i < 4; i++) {

⌨️ 快捷键说明

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