         for tileCell in sortedCells {
             newTileCells.append(tileCell)
         }
+        var combinedIndex = 1000
         for (cellIndex, cell) in sortedCells.enumerated() {
-            if cellIndex + 1 < sortedCells.count {
+            cell.isCombined = false
+            if cellIndex + 1 < sortedCells.count && cellIndex != combinedIndex + 1 {
                 if sortedCells[cellIndex].num == sortedCells[cellIndex + 1].num {
                     if needMove {
                         cell.num = cell.num! * 2
-                        newTileCells.remove(at: cellIndex + 1)
-                        let superfluousCell = sortedCells[cellIndex + 1]
+                        if isSameNumExist {
+                            newTileCells.remove(at: cellIndex)
+                        }else {
+                            newTileCells.remove(at: cellIndex + 1)
+                        }
+                        let extraCell = sortedCells[cellIndex + 1]
                         UIView.animate(withDuration: 0.1, animations: {
-                            superfluousCell.alpha = 0
+                            extraCell.alpha = 0
                         }, completion: { (_) in
-                            superfluousCell.removeFromSuperview()
+                            extraCell.removeFromSuperview()
                         })
                         var index = 0
                         for tileCell in tileCells {
-                            if superfluousCell.cellID == tileCell.cellID {
+                            if extraCell.cellID == tileCell.cellID {
                                 break
                             }
                             index += 1

    
    private func moveTile(direction: ZYDirection, cellLines: [[ZYTileCell]], combinedCellLines: [[ZYTileCell]]) {
        for (lineIndex, lineCells) in cellLines.enumerated() {
            for (index, originCell) in lineCells.enumerated() {
                
                let combinedCells = combinedCellLines[lineIndex]

                            scoreChanged!(cell.num!)
                        }
                    }
                    combinedIndex = cellIndex
                    isSameNumExist = true
                }
            }
        }
        print(newTileCells)
        print("")
        return newTileCells
    }
    
