@Override
    public void paint(Graphics g) {

	Color colores[] = new Color[6];
	colores[0] = Constantes.COLOR_CIC_0;
	colores[1] = Constantes.COLOR_CIC_1;
	colores[2] = Constantes.COLOR_CIC_2;
	colores[3] = Constantes.COLOR_CIC_3;
	colores[4] = Constantes.COLOR_CIC_4;
	colores[5] = Constantes.COLOR_CIC_5;

	super.paint(g);

	int x = 0;
	int xfin = 0;
	int y = Constantes.ALTO_VENTANA / 4;
	int yfin = 0;
	double x_aux = 0;
	int i = 0;
	int max = arbol.lastEntry().getKey();
	Iterator<Entry<Integer, Integer>> it = arbol.entrySet().iterator();
	Iterator<Entry<Integer, Integer>> itaux = arbol.entrySet().iterator();
	if (it.hasNext()) {
	    itaux.next();
	}
	while (itaux.hasNext()) {

	    Entry<Integer, Integer> tramoini = it.next();

	    if (it.hasNext()) {

		Entry<Integer, Integer> tramofin = itaux.next();

		// pintamos la carretera

		g.setColor(Color.BLACK);
		// g.drawLine(x, y, (tramofin.getKey() /
		// max)*Constantes.ANCHO_VENTANA, y
		// - tramoini.getValue());
		g.drawLine(
			(int) x_aux,
			y,
			(int) ((tramofin.getKey() / (double) max) * Constantes.ANCHO_PANEL_LIENZO),
			y - tramoini.getValue());
		// System.out.println(x_aux);
		// System.out.println((int)((tramofin.getKey()/(double)max)*Constantes.ANCHO_PANEL_LIENZO));

		// pintamos el cielo
		Polygon polygonCielo;
		polygonCielo = creaPoligono(
			new Point((int) x_aux, 0),
			new Point((int) x_aux, y - 1),
			new Point(
				(int) ((tramofin.getKey() / (double) max) * Constantes.ANCHO_PANEL_LIENZO),
				(y - tramoini.getValue()) - 1),
			new Point(
				(int) ((tramofin.getKey() / (double) max) * Constantes.ANCHO_PANEL_LIENZO),
				0));
		Polygon polygon = new Polygon();

		pintaPoligono(polygonCielo, g, Color.CYAN);

		// pintamos el suelo

		Polygon polygonSuelo;
		polygonSuelo = creaPoligono(
			new Point((int) x_aux, Constantes.ALTO_VENTANA),
			new Point((int) x_aux, y + 1),
			new Point(
				(int) ((tramofin.getKey() / (double) max) * Constantes.ANCHO_PANEL_LIENZO),
				(y - tramoini.getValue()) + 1),
			new Point(
				(int) ((tramofin.getKey() / (double) max) * Constantes.ANCHO_PANEL_LIENZO),
				Constantes.ALTO_VENTANA));
		pintaPoligono(polygonSuelo, g, Color.GREEN);

		x = tramofin.getKey() / Constantes.FACTORESCALA;
		y = y - tramoini.getValue();
		x_aux = (tramofin.getKey() / (double) max)
			* Constantes.ANCHO_PANEL_LIENZO;
	    }

	}

	// pintamos los PK de las curvas

	Iterator<Entry<Integer, Integer>> itcurva = curva.getArbolCurvas()
		.entrySet().iterator();
	while (itcurva.hasNext()) {
	    Entry<Integer, Integer> tramocurva = itcurva.next();
	    g.setColor(Color.red);
	    double xcurva = ((double) tramocurva.getKey() / max);
	    xcurva = xcurva * Constantes.ANCHO_PANEL_LIENZO - 1;
	    g.drawLine((int) xcurva, 0, (int) xcurva, Constantes.ALTO_VENTANA);
	    g.drawString("Curva ",
		    (int) xcurva - 80, 30);
	    g.drawString("metro " + tramocurva.getKey(),
		    (int) xcurva - 80, 40);
	    g.drawString("vel max " + tramocurva.getValue(),
		    (int) xcurva - 80, 50);

	}
	
	Iterator<Entry<Integer, Integer>> itpend = pendiente.getArbol().entrySet().iterator();
	
	while (itpend.hasNext()) {
	    Entry<Integer, Integer> tramo = itpend.next();
	    g.setColor(Color.orange);
	    double xpend = ((double) tramo.getKey() / max);
	    xpend = xpend* Constantes.ANCHO_PANEL_LIENZO;
	    g.drawLine((int) xpend, 0, (int) xpend, Constantes.ALTO_VENTANA);
	    g.drawString("Pendiente",
		    (int) xpend - 100, 300);
	    g.drawString("metro " + tramo.getKey(),
		    (int) xpend - 100, 310);
	    g.drawString("porcentaje " + tramo.getValue()+"%",
		    (int) xpend - 100, 320);

	}
	// aqui se pondra la informacion del ciclista para que se vaya pintando,
	// ahora solo se pinta un punto en pantalla
	// for (i = 0; i < cic.size(); i++) {
	int id_color_ciclista = 0;
	for (Ciclista c : lista_de_ciclistas) {
	    g.setColor(colores[id_color_ciclista]);

	    if (calculaYparaPuntoCiclista(c, arbol) == 0)
		y = Constantes.ALTO_VENTANA / 4
			- Constantes.ANCHO_PUNTO_CICLISTA / 2;
	    else
		y = calculaYparaPuntoCiclista(c, arbol);
	    g.fillOval(
		    (int) ((c.getBici().getEspacioRecorrido() / max) * Constantes.ANCHO_PANEL_LIENZO)
			    - Constantes.ANCHO_PUNTO_CICLISTA / 2, y,
		    Constantes.ANCHO_PUNTO_CICLISTA,
		    Constantes.ANCHO_PUNTO_CICLISTA);

	    id_color_ciclista++;

	}
	
	

    }