public void left() {
        boolean needAddTile = false;
        for (int i : _0123) {
            // get i-th line
            Tile[] origin = getLine(i);
            // get the line have been moved to left
            Tile[] afterMove = moveLine(origin);
            // get the the line after
            Tile[] merged = mergeLine(afterMove);
            // set i-th line with the merged line
            setLine(i, merged);
            if (!needAddTile && !Arrays.equals(origin, merged)) {
                // if origin and merged line is different
                // need to add a new Tile in the board
                needAddTile = true;
            }
        }

        // if needAddTile is false, those line didn't change
        // then no need to add tile
        if (needAddTile) {
            addTile();
        }
    }