public Juego() {
        setTitle("Deep in the shadows");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800, 600); //tamaño del jframe
        addKeyListener(this);
        addMouseListener(this);

        fontPuntajes = new Font("Cambria", 0, 34);

        cont = 0;//contador de tiempo del video al inicio
        auxLeerNombre = true;// permite leer una vez el nombre del jugador
        //Valores por default a los nombres
        nom1 = "-";
        nom2 = "-";
        nom3 = "-";
        nom4 = "-";
        nom5 = "-";
        //Valores por default a los mejores puntajes
        punt1 = 0;
        punt2 = 0;
        punt3 = 0;
        punt4 = 0;
        punt5 = 0;

        try { //Se llama la funcion de Puntajes para establecer los puntajes mayores antes de empezar cualquier juego
            // Si es la primera vez que se juega, se llena con los valores default
            Puntajes();
        } catch (IOException e) {
            System.out.println("Error en " + e.toString());
        }

        imagenBotonCreditos = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonCreditos.png"));
        imagenBotonInstrucciones = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonInstruc.png"));
        imagenBotonIniciar = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonIniciar.png"));
        imagenBotonAjustes = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonAjustes.png"));
        imagenBotonMejPuntajes = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonMPuntaje.png"));
        imagenBotonRegresa = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/botonRegresa.png"));
        imagenBotonSaltaIntro = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Botones/saltarIntro.png"));
        imagenPausado = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/Pausado.png"));

        imagenSonidoOff = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/apagado.png"));
        imagenSonidoOn = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/encendido.png"));
        imagenMusicaOff = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/apagado.png"));
        imagenMusicaOn = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/encendido.png"));

        //Los botones se crean y se posicionan al centro del JFrame uno debajo de otro
        botonCreditos = new Boton(0, 0);
        botonCreditos.getAnima().sumaCuadro(imagenBotonCreditos, 300);
        botonCreditos.setPosX(getWidth() / 2 - botonCreditos.getAncho() / 2);
        botonCreditos.setPosY(getHeight() / 2 + 200);

        //BOTONES DE LAS BOCINAS
        musicaOn = new Boton(0, 0);
        musicaOn.getAnima().sumaCuadro(imagenMusicaOn, 300);
        musicaOn.setPosX(50);
        musicaOn.setPosY(380);

        musicaOff = new Boton(0, 0);
        musicaOff.getAnima().sumaCuadro(imagenMusicaOff, 300);
        musicaOff.setPosX(120);
        musicaOff.setPosY(380);

        sonidoOn = new Boton(0, 0);
        sonidoOn.getAnima().sumaCuadro(imagenSonidoOn, 300);
        sonidoOn.setPosX(50);
        sonidoOn.setPosY(280);

        sonidoOff = new Boton(0, 0);
        sonidoOff.getAnima().sumaCuadro(imagenSonidoOff, 300);
        sonidoOff.setPosX(120);
        sonidoOff.setPosY(280);

        botonSaltaIntro = new Boton(0, 0);
        botonSaltaIntro.getAnima().sumaCuadro(imagenBotonSaltaIntro, 300);
        botonSaltaIntro.setPosX(getWidth() - 160);
        botonSaltaIntro.setPosY(getHeight() - 55);

        botonInstrucciones = new Boton(0, 0);
        botonInstrucciones.getAnima().sumaCuadro(imagenBotonInstrucciones, 300);
        botonInstrucciones.setPosX(getWidth() / 2 - botonInstrucciones.getAncho() / 2);
        botonInstrucciones.setPosY(getHeight() / 2 + 50);

        botonIniciar = new Boton(0, 0);
        botonIniciar.getAnima().sumaCuadro(imagenBotonIniciar, 300);
        botonIniciar.setPosX(getWidth() / 2 - botonIniciar.getAncho() / 2);
        botonIniciar.setPosY(getHeight() / 2);

        botonAjustes = new Boton(0, 0);
        botonAjustes.getAnima().sumaCuadro(imagenBotonAjustes, 300);
        botonAjustes.setPosX(getWidth() / 2 - botonAjustes.getAncho() / 2);
        botonAjustes.setPosY(getHeight() / 2 + 100);

        botonMejPuntajes = new Boton(0, 0);
        botonMejPuntajes.getAnima().sumaCuadro(imagenBotonMejPuntajes, 300);
        botonMejPuntajes.setPosX(getWidth() / 2 - botonMejPuntajes.getAncho() / 2);
        botonMejPuntajes.setPosY(getHeight() / 2 + 150);

        botonRegresa = new Boton(0, 0);
        botonRegresa.getAnima().sumaCuadro(imagenBotonRegresa, 300);
        botonRegresa.setPosX(getWidth() / 2 - botonRegresa.getAncho() / 2);
        botonRegresa.setPosY(getHeight() - 55);

        //Antorchas
        antorcha1 = new Antorcha(getWidth() / 2, 0);
        antorcha2 = new Antorcha(3 * getWidth() / 4, 0);
        antorcha1.setPosY(getHeight() + antorcha1.getAlto());
        antorcha2.setPosY(getHeight() + antorcha2.getAlto());

        //Municiones
        municiones = new Municion(0, 0);
        municiones2 = new Municion(0, 0);
        municiones3 = new Municion(0, 0);

        iniciaMusicaIntro = 0;//Auxiliar para reproducir la musica de introduccion
        iniciaMusicaNivel1 = 0;//Auxiliar para reproducir la musica del nivel 1

        //Puerta
        puerta1 = new Puerta(10, 0);
        puerta1.setPosY(getHeight() + puerta1.getAlto());
        //puerta1.setPosX(puerta1.getAncho());

        //Se inicializan las imagenes de Fondo
        imFondoMenu = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/menu.jpg")); // imagen de fondo del menu
        imFondoAjustes = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/ajustes_1.JPG"));
        imFondoPuntajes = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/PantallaMPuntajes.jpg"));
        imFondoCreditos = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/creditos.JPG"));
        imFondoNivel1 = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/fondo1.jpg"));
        imFondoNivel2 = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/nivel2.jpg"));
        imFondoNivel3 = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/nivel3.jpg"));
        imFondoInstrucciones = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/instrucciones.JPG"));
        imagenIntro = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/IntroGIF.gif"));

        //Musica
        musicaMenu = new SoundClip("sonidos/menu.wav");
        musicaIntro = new SoundClip("sonidos/intro.wav");
        musicaNivel1 = new SoundClip("sonidos/nivel1.mid");

        //Sonidos
        sonidoDiamante = new SoundClip("sonidos/agarraDiamante.wav");
        sonidoSalta = new SoundClip("sonidos/jumpLink.wav");
        sonidoDisparo = new SoundClip("sonidos/shoot.wav");
        sonidoMuniciones = new SoundClip("sonidos/agarraBalas.wav");
        sonidoGameOver = new SoundClip("sonidos/gameOver.wav");

        // imFondoInstrucciones = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/instrucciones.jpg"));
        imFondoGameOver = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/gameOver.JPG"));
         // imFondoInstrucciones = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("Fondos/instrucciones.jpg"));
        imFondoWin = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/finalJuego.gif"));
        piso = new Plataforma(0, getHeight() + 10);
        //se inicializan actores
        jhon = new Personaje(0, 200 - 100); //menos 100 para que este sobre la primera barra
        jhon.setPosX(jhon.getAncho() + 100);

        plataformaLst = new LinkedList();
        listaCobras = new LinkedList();
        listaMomias = new LinkedList();

        ran = 15;
        //Llenar lista de plataformas
        for (int x = 1; x <= ran; x++) {

            if (x == ran) { // si estas en la ultima plataforma, insertar la plataforma extendida que funcionara como piso del nivel
                piso.setPosY(200 * x);
                plataformaLst.add(piso);
            } else { // Si no, insertar pares de plataformas 
                int ran2 = 200 + (int) (Math.random() * ((600 - 200) + 1));
                plataformaLst.add(new Plataforma(-(800 - ran2), 200 * x));
                plataformaLst.add(new Plataforma(ran2 + 120, 200 * x));
            }

        }
        //Se inicializan los diamantes
        diamante = new Diamante(5, plataformaLst.get(ran).getPosY() - 60);
        diamante2 = new Diamante(getWidth() - 100 - diamante.getAncho(), plataformaLst.get(4).getPosY() - 60);
        diamante3 = new Diamante(getWidth() / 2, plataformaLst.get(6).getPosY() - 60);
        diamante4 = new Diamante(5, plataformaLst.get(8).getPosY() - 60);
        diamante5 = new Diamante(getWidth() / 2, plataformaLst.get(10).getPosY() - 60);
        diamante6 = new Diamante(5, plataformaLst.get(14).getPosY() - 60);
        municiones.setPosX(30);
        municiones.setPosY(plataformaLst.get(3).getPosY() - 45);
        municiones2.setPosX(30);
        municiones2.setPosY(plataformaLst.get(6).getPosY() - 45);
        municiones3.setPosX(getWidth() / 2);
        municiones3.setPosY(plataformaLst.get(12).getPosY() - 45);

        //Se inicializan los enemigos y obstaculos
        piedra = new Piedra(this.getWidth() - 110, this.getHeight() - 110);
        picos = new Picos(0, 25);

        //Se inicializa la bala
        bala = new Bala(-20, 0);

        nivel = 0;// Nivel 0 indica que todavia no inicia
        menu = false; // comenzamos en el menu

        // Las demas pantallas estan apagadas
        instrucciones = false;
        ajustes = false;
        creditos = false;
        mueveJohn = false;
        puntajes = false;
        pausa = false;
        gameOver = false;
        win=false;
        sonidosFlag = true;
        musicaFlag = true;
        saltaIntroduccion = false;
        veloc = 3;
        gravedadB = false;
        gravedad = 9.8;
        tP = .1;
        t = .15;
        puntos = 0;
        iniciaMusica = 0;
        playerName = "";
        //HILO
        Thread th = new Thread(this);
        // Empieza el hilo
        th.start();
    }