private void makeMoves() {
        Direction d = null;
        int destination;
        List<Worm> list = new LinkedList();

        for (int i = 0; i < size_x * size_y; ++i) {
            if (tiles[i] instanceof Worm) {
                list.add((Worm) tiles[i]);
            }
        }

        for (Worm worm : list) {
            destination = getNeighbour(worm.getPosition(), worm.calculateDirection());

            if (destination >= 0) {
                if (tiles[destination] != null) {
                    tiles[worm.getPosition()].updateOnColision(tiles[destination]);
                } else {
                    tiles[destination] = tiles[worm.getPosition()];
                    tiles[worm.getPosition()] = null;
                    worm.move(destination);
                }
            }
        }
    }