2048当中移动方法的写法

来源:互联网 发布:js特效很好看的网站 编辑:程序博客网 时间:2024/05/17 01:13
moveUp{
for(int col =0; col < Game_Cols; col++){//行是不用变得
for(int row = Game_Rows -1; row >=0 ;row--){//每次取出一列就是从3开始去取到0
if(map[row][col] > 0){//如果这个位置的值是大于0的那么就判断这个位置的上面的值是不是为空
for(int row1 = row; row1< Game_Rows -1; row1++){
if(map[row1+1][col] == 0){//如果为空可以直接将当前的位置进行上移,
map[row1+1][col] = map[row1][col];
map[row1][col] = 0;
m_allTiled.at(map[row1+1][col] -1);
moveTo(row1 +1,col);//就是执行这个方法。进行的上移操作

}else{

//判断是可以消除
int numObj = m_allTiled.at(map[row1+1][col]-1)->m_number;

int numNow =  m_allTiled.at(map[row1][col]-1)->m_number;
if(numObj ==numNow){//说明这两个数字是相同的
m_allTiled.at(map[row1+1][col] - 1)->doubleNumber();
m_allTiled.at(map[row1][col] - 1)->removeFromParent();
int index = map[row1][col];
m_allTiled.earse(map[row1][col]-1);
for(int  r=0; r< Game_rows; r++){
for(int c=0;c<gameCols;c++){
if(map[r][c]> index){
map[r][c]--;//其他元素的位置要做相应的调整。
}
}
}
map[row1][col] =0;
}

break;
}
}
  }
}
}

}

//移动就是要传递过来相应的行还有列数
moveTo(int r, int c){
this->m_row = r;

this->m_col = c;

//设置位置的时候要进行相应的处理,就是将这个位置放的更加合理。

this->setposition(point(m_col *Game_Tiled_with+Game_tiled_board_width*(m_col+ 1), m_row*Game_Tiled_height+Game_Tiled_Board_width*(M_row+1))));

}
0 0