private void initLevel(){
    	levelinfo = new Level (levelnum, B_WIDTH, B_HEIGHT);
        crawler = new Crawler(levelinfo);
        exes.clear();
        int ncols = levelinfo.getColumns().size();
        for (int i=0; i<levelinfo.getNumExes(); i++ ) {
            exes.add(new Ex(r.nextInt(ncols),
            		levelnum > 1 ? r.nextBoolean() : false,
            		ncols, 
       				levelinfo.exesCanMove(),
       				levelinfo.isContinuous() ));
        }
        spikes.clear();
        if (levelinfo.getNumSpikes() > 0) {
        	boolean hasSpike[] = new boolean[ncols];
        	for (int i=0; i<ncols;i++)
        		hasSpike[i]=true;
        	for (int i=0; i<(ncols-levelinfo.getNumSpikes());) {
        		int sc = r.nextInt(ncols);
        		if (hasSpike[sc]) {
        			hasSpike[sc] = false;
        			i++;
        		}
        	}
        	for (int i=0; i<ncols;i++)
        		if (hasSpike[i])
        			spikes.add(new Spike(i));
        	
        }
        crawler.resetZapper();

        //also do whatever we need when replaying a level
        replayLevel();
    }