可以不用數(shù)組標(biāo)記來標(biāo)記是否已經(jīng)累加過。我的方法如下:(用一個(gè)變量idx來標(biāo)記)
function moveLeft() {
? if(!canMoveLeft(board)) {
? ? return false;
? }else {
? ? for(var i=0;i<4;i++) {
? ? ? var idx = 0; //定義idx ?用來標(biāo)記
? ? ? for(var j=1;j<4;j++) {
? ? ? ? if(board[i][j]!=0) {
? ? ? ? ??
? ? ? ? ? //便利其所有左側(cè)位置
? ? ? ? ? for(var k=idx;k<j;k++) {
? ? ? ? ? ? if(board[i][k]==0&&noHorizontal(i,k,j,board)) {
? ? ? ? ? ? ? //move
? ? ? ? ? ? ? showMoveAnimation(i,j,i,k);
? ? ? ? ? ? ? //reset
? ? ? ? ? ? ? board[i][k] = board[i][j];
? ? ? ? ? ? ? board[i][j] = 0;
? ? ? ? ? ? ? continue;
? ? ? ? ? ? }else if(board[i][k]==board[i][j]&&noHorizontal(i,k,j,board)) {
? ? ? ? ? ? ? //move
? ? ? ? ? ? ? showMoveAnimation(i,j,i,k);
? ? ? ? ? ? ? //add reset
? ? ? ? ? ? ? board[i][k] += board[i][j];
? ? ? ? ? ? ? board[i][j] = 0;
? ? ? ? ? ? ? idx++; //累加過的數(shù)字,在下一次循環(huán)中跳過,即從下一個(gè)位置計(jì)算就可以了
? ? ? ? ? ? ? score += board[i][k];
? ? ? ? ? ? ? updateScore(score);
? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? }
? ? ? }
? ? }
? }
? setTimeout("updateBoardView()",200);
? return true;
}
2017-05-20
如果k =3時(shí),怎么辦