Java 俄罗斯方块消行算法

完整的俄罗斯方块 源码地址:https://github.com/yifanzheng/java_applet/tree/master/tetris 

 

/**
* 消行得分
*/
private int plusExp() {
  //获取地图信息
  boolean[][] gameMap = this.gameDto.getGameMap();
  //初始化消行数
  int lineNum=0;
  //扫描地图,判断是否可以消行
  for(int y=0;y<gameMap.length;y++){

    if(this.isCanRemoveLine(y, gameMap)){
    //消行操作
    this.removeLine(y,gameMap);
    //增加消行数
    lineNum++;
    }
  }
  return lineNum;
}

/**
* 消行操作
*/
private void removeLine(int rowNumber,boolean[][] gameMap){
   for(int x=0;x<GameConfig.getSystemConfig().getMaxX();x++){
      for(int y=rowNumber;y>0;y--){
       gameMap[y][x]=gameMap[y-1][x];
     }
   //第0行置为false
   gameMap[0][x]=false;
  }
}

/**
* 判断是否可以消行
*/
private boolean isCanRemoveLine(int y,boolean[][] gameMap) {
     for(int x=0;x<GameConfig.getSystemConfig().getMaxX();x++){
     //只要该行有一个空(false),就不消行
    if(!gameMap[y][x]){
    return false;
    }
  }
  return true;
}

 


版权声明:本文为oschina_41790905原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。