@Override
	public void run() {
		setSize(480, 320);// Remover despues
		// Se inicia con el double-buffering y los asuntos grficos.
		BufferedImage screen = new BufferedImage(480, 320,
				BufferedImage.TYPE_INT_RGB);
		Graphics g = screen.getGraphics();
		Graphics appletGraphics = getGraphics();

		long delta = 0l;

		// Loop del juego, esto itera muchas veces para lograr el efecto de
		// movimiento.
		while (true) {
			long lastTime = System.nanoTime();

			g.setColor(Color.black);
			g.fillRect(0, 0, 480, 320);
			
			//Actualiza el estado, se actualiza de nanosegundos a segundos.
			engine.update((float)(delta / 1000000000.0));
			//Renderiza el mundo
			engine.render(g);
			
			// Dibuja todos los objetos en pantalla.
			appletGraphics.drawImage(screen, 0, 0, null);
			// Seteo el frame rate para que se muestren los graficos a un rate
			// adecuado apra el ojo humano.
			delta = System.nanoTime() - lastTime;
			if (delta < 20000000L) {
				try {
					Thread.sleep((20000000L - delta) / 1000000L);
				} catch (Exception e) {
					// Aca no va a pasar nada.
				}
			}
			if (!isActive()) {// Si el applet aun sigue activo...
				return;
			}
		}
	}