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

📄 tetrisblock.java

📁 使用JAVA编程的手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package game.tetris;


import javax.microedition.lcdui.*;

import java.util.Random;


public class TetrisBlock {

  //各种砖块,1-7为活动砖块颜色,8为墙砖颜色
  public static final int[] BRICK_COLORS = {
      0x00FF0000, 0x0000FF00, 0x00FFFF00, 0x000000FF, 0x00FF00FF, 0x0000FFFF,
      0x00C0DCC0, 0x00808080};

  /**
   * blockpattern的编码规则:blockpattern表示一个下坠物体的形状,一种下坠物的颜色是固定的。
   * 对于一个下坠物,用一个三维数组表示,第一维用rot表示(旋转值),第二维用x(也就是行),第三维用y表示(也就是列)。
   * 所以 blockpattern1:田字及四种旋转形状
   * blockpattern2:反L字及四种旋转形状
   * blockpattern3:L字及四种旋转形状
   * blockpattern4:1字及四种旋转形状
   * ........................
   * 第一维最重要:rot,旋转值
   */

  protected int blockpattern1[][][] = {
		  
      {
      {
      0, 0, 0, 0}
      , 
      
      {
      0, 1, 1, 0}
      ,
      
      {
      0, 1, 1, 0}
      ,
      
      {
      0, 0, 0, 0}
  }
      
      	//1,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}
  }
  };

  protected int blockpattern2[][][] = {
      {
      {
      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}
  }
  };

  protected int blockpattern3[][][] = {
      {
      {
      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}
  }
  };

  protected int blockpattern4[][][] = {
      {
      {
      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 blockpattern5[][][] = {
      {
      {
      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 blockpattern6[][][] = {
      {
      {
      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 blockpattern7[][][] = 
  {
      {
    	  {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 blockpattern[][][]; /* 当前坠物形状,为以上定义的七个下坠物之一 */
  private int blockNextpattern[][]; /* 下一个坠物形状,显示在游戏容器的右边 */

  private int x; //blockpattern左上角x坐标,x=i表示左上角距离游戏容器左上角x轴上i个小砖块单位
  private int y; //blockpattern左上角y坐标,y=i表示左上角距离游戏容器左上角y轴上i个小砖块单位
  private int oldx; //x的旧值
  private int oldy; //y的旧值
  private int rot; //旋转值,0-3
  private int oldrot; //旋转旧值
  private int pattern; /* 组成当前坠物所用小砖块id(1-7),同时也表示一种下坠物形状 */
  private int next; /* 组成下一个坠物所用小砖块id(1-7),同时也表示一种下坠物形状 */
  
  private final int UNDEFINED = 99;

  private TetrisMap map;
  protected Random rand;
  
  public int gamearea_x;
  public int gamearea_y;
  public int brick_Width;

  
  
  /* 构造,保存map,初始化blockimage,rand,next */
  
  //把ketrisBlock中pattern,next的随机数生成放到构造方法中,(便于编程)
  public TetrisBlock(TetrisMap map , boolean isMaster) {
    this.map = map;
    
    if(isMaster)
    {

        rand = new Random();
        
        //随机生成的pattern和next在1~7之间,8为墙
        next =Math.abs(rand.nextInt()) % 7 + 1;
        
        pattern = next;
        
        next = Math.abs(rand.nextInt()) % 7 + 1;
    }
    else
    {
    	//如果本TetrisBlock代表的是附屏,
    	//则当前下坠方块和下一个下坠方块由远端设备决定
    	pattern = UNDEFINED;
	    next = UNDEFINED;
    }    
    setParameter();
  }
  
  public void setPN(int pattern_2, int next_2)
  {
//	  bug.println(" KetrisBlock_2.setPN()");
//	  bug.println("pattern_2 = "+ pattern_2 );
//	  bug.println("next_2 = " + next_2);
//	  
	  pattern = pattern_2;
	  next = next_2;
	  
	  
  }
  
  public void setParameter()
  {
	  gamearea_x = map.gamearea_x;
	  gamearea_y = map.gamearea_y;
	  brick_Width = map.brick_Width;
  }
  


  /* 初始化 */
  protected void init() {

//    pattern = next;

⌨️ 快捷键说明

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