# WhiteBlock **Repository Path**: keyanghan/WhiteBlock ## Basic Information - **Project Name**: WhiteBlock - **Description**: 经典安卓游戏别踩白块 软件项目管理作业 - **Primary Language**: Android - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2016-12-31 - **Last Updated**: 2024-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #软件名称:WhiteBlock #作者:2014112133 柯杨涵 #开发环境:android studio #实现效果: 1、刚开始时,最下面有一栏为黄色,紧接着上面每一行都是有一个黑色块,其余为白色块,准备冲啊..... 2、游戏中,在游戏过程中都有一个计时器,记录当前所进行的时间。冲啊.....注意别点到了白块儿。 3、玩家如果误点了白色块,会出现游戏失败界面,如果之前有创立过最佳成绩,则会显示出来,记录的是完成任务所用的时间,时间越短说明你越厉害。点击“重来”即会重新开始 #创建BLOCK类: 游戏中要用到很多方块,所以我们单独创建一个方块类Block。Block是一个个白块或者黑块,单个块元素,这里我们的Block继承矩形Rectangle,每个Block用矩形来展示。 1、声明一些所需要的成员变量 public class Block extends Rectangle { // 游戏场景 private GameScene mGameScene; // 此block的颜色类型,白色还是黑色? private int colorType; // block 所在的行 private int row; // block 所在的列 private int column; // ======================get&set======================== public int getRow() { return row; } public void setRow(int row) { this.row = row; } public int getColumn() { return column; } public int getColorType() { return colorType; } // ===================================================== 2、构造器1,初始化blocks时用到,当为最底部一行时设为黄色 /** * 构造器1,初始化blocks时用到 * @param pGameScene 游戏场景 * @param row block所在的行 * @param column block所在的列 * @param pWidth block的宽 * @param pHeight block的高 * @param blackIndex 用来确定是否是黑块,如果blackIndex == column时设为黑块 * @param pVertexBufferObjectManager */ public Block(GameScene pGameScene, int row, int column, float pWidth, float pHeight, int blackIndex, VertexBufferObjectManager pVertexBufferObjectManager) { super(column * pWidth, (3 - row) * pHeight, pWidth - 1, pHeight - 1, pVertexBufferObjectManager); this.mGameScene = pGameScene; this.row = row; this.column = column; if (row == 0) { // 第一行设置为黄块 this.setColor(Color.YELLOW); } else { // 初始化block的颜色数据,是白块还是黑块? initBlockData(column, blackIndex); } // 设置可以相应触碰事件 this.setIgnoreTouch(false); } 3、构造器2,新增blocks时用到 ** * 构造器2,新增blocks时用到 * @param pGameScene 游戏场景 * @param column block所在的列 * @param pWidth block的宽 * @param pHeight block的高 * @param blackIndex 来确定是否是黑块,如果blackIndex == column时设为黑块 * @param pVertexBufferObjectManager */ public Block(GameScene pGameScene, int column, float pWidth, float pHeight, int blackIndex, VertexBufferObjectManager pVertexBufferObjectManager) { super(column * pWidth, 0, pWidth - 1, pHeight - 1, pVertexBufferObjectManager); this.mGameScene = pGameScene; this.column = column; // 初始化block的颜色数据,是白块还是黑块? initBlockData(column, blackIndex); // 设置可以相应触碰事件 this.setIgnoreTouch(false); } 4、实现函数initBlockData初始化block的颜色数据,是白块还是黑块 /** * 初始化block的颜色数据,是白块还是黑块? * @param column * @param blackIndex */ private void initBlockData(int column, int blackIndex) { if (blackIndex == column) { // 设置为黑块 this.setColor(Color.BLACK); this.colorType = ConstantUtil.COLOR_BLACK; } else { // 设置为白块 this.setColor(Color.WHITE); this.colorType = ConstantUtil.COLOR_WHITE; } } 5、每个block 实现触碰监听,当按下时,调起在GameScene中实现的touchBlock方法。 记得设置可以相应触碰事件setIgnoreTouch(false); @Override public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { // 触碰事件监听 if (pSceneTouchEvent.isActionDown()) { // 点击到Block时进行的逻辑处理 mGameScene.touchBlock(this); } return true; } #更多细节请看游戏源码