JMF

1.Definiciones:

javax.media: es un paquete con clases relacionados con datos multimedia (video, audio…)

javax.media.control: es un interfaz relacionado con el control (de los bitsrate, de la calidad…)  

javax.media.format : es un paquete que está relacionado con el tipo exacto del formato necesario para manejar los datos multimedia.

javax.media.util: es un paquete relacionado con el funcionamientos del buffer.

El 2. y el 3. no tengo ni idea de que me pregunta

4. Para reproducir audio y video : métodos como play(), stop()…

Luego hay que instalar el JMF… tuvimos problemas para instalarlo en los ordenadores de la universidad. Nosotros lo hemos usado en nuestro juego así que ya sabíamos como iba.

Implementamos un ControllerListener para las funciones del reproductor,hemos creado un objeto URL para enlazar los videos, hemos creado un panel dentro de la ventana para controlar el reproductor(con play, stop, para cerrarlo…)hemos importado javax.media. Este es el reproductor basico

En el segundo ejercicio te pedian implementar un botón que si está activo reproduzca la película desde el principio cuando llegue al final, y cuando este desactivado cuando finalice no vuelva al principio. Para saber si el botón está seleccionado o no, existe el evento ItemEvent.SELECTED e ItemEvent.

DESELECTED.Si está activado basta con reiniciar la pelicula :

reproductor.setMediaTime(

new Time(0));reproductor.start();

y si está desactivado : reproductor.stop();

 

 

 

 

 

Por último nos pedían que pusieramos botones para cambiar de escena, para incluir la imagen al botón basta con poner :

 

 

JButton boton1 =

new JButton(“Capítulo 1″ ,new ImageIcon(“./imagen1.jpg”));

Y para que comience el el segundo 6 :

reproductor.setMediaTime(

new Time(6.0));

 

SUERTE EN EL EXAMEN!!

 

Penúltima práctica…Eventos en Swing

Bueno está práctica llega un poco tarde. Esto de los blogs… no me ha acabado de convencer, yo creo que es más productivo un foro,donde tengamos acceso a todos de una forma más cómoda, no tener que buscar compañero por compañero a ver quien lo ha actualizado y más de uno se queda sin visitas. (Bueno esto es sólo una opinión)

Bueno como iba diciendo está es la penúltima práctica, muchos estuvieron trabajando con el videojuego… mi compañero uno de ellos, que le tengo abandonado con el juego…:S

1.En el primer ejercicio te pedían una sencilla ventana con un botón y al pincharlo tenía que salir un texto…tuve un pequeño problema, resulta quye había hecho el JLabel texto; lo había incluído en el JPanel, pero no lo había incluído en el Container o JFrame, así que después del pequeño despiste por fin lo conseguí. Utilice el setText(” texto”), tuve que escribir el código de la clase Manejador (con implements ActionListener) a parte, y escribir :   

Manejador manejador = new Manejador();                        boton1.addActionListene(manejador);                                            //agregamos la clase Manejador al boton

2. El segundo te piden algo parecido, en este caso se debe crear una etiqueta JLabel etiqueta = new JLabel(“etiqueta”); . No podemos olvidar poner  etiqueta.setOpaque(true); (para que se visiualice) ,y  luego agregarla a nuestro Frame panel.add(etiqueta);Ahora el manejador lo modificaremos también de tal forma que al pinchar se cambie el color de la etiqueta, pondré el código de la clase Manejador que utilizamos dentro de nuestra clase Simple01GUI:

public class Manejador implements ActionListener{
  public void actionPerformed (ActionEvent e){
   Object source1 = e.getSource();
if(source1==(JButton)boton1) etiqueta.setBackground(Color.green);
}
  
 }

3. Te piden utilizar hilos que por una parte cambien el color del panel(JPanel) cada vez que le demos al boton y cada vez que pulsemos ENTER se cambiara el color de la etiqueta(JLabel). Tenemos un lío tremendo con los hilos, en la práctica anterior vimos el TwoThreads para hacer dos cosas a la vez, pero esto meterlo ahora en botones nos pareció muy complicado… Por una parte creamos un método que cambiase el color y que luego fuese llamado por actionPerformed (para que cambie la etiqueta cuando pulsemos el botón):

 

 

 

 

public void cambiaColor(){

 

 

if(etiqueta.getBackground().equals(Color.green

)){etiqueta.setBackground(Color.red);

 

System.

 

 

 

out.println(Thread.currentThread().getName() +“cambio de color”);

 

}

 

 

else

{etiqueta.setBackground(Color.green);}

}

Después creamos un objeto StreamReader para leer del teclado, y cada vez que pulsemos intro (‘\n’) se cambie el color del panel:

 

InputStreamReader input = new InputStreamReader(System.in);
         int p;
       
            while( (p=input.read())!= -1) {
               if (p == ‘\n’) {
                  System.out.println(Thread.currentThread().getName()+
                     “INTRO”);
               }
            }

 4.Ahora nos piden utilizar los hilos para que el boton cambie de color cada vez que le pinchemos. Así queda nuestro actionPerformed:

 public void actionPerformed(ActionEvent e){
         if(boton.getBackground().equals(Color.PINK)){
            boton.setBackground(Color.CYAN);
            System.out.println(Thread.currentThread().getName() +
                    “:cambio de color”);
         }
         else{
            boton.setBackground(Color.PINK);
         }
      }

 

 

 

5.Este no lo llegamos a implementar, pero nos lo planteamos. Había que crear una base de datos donde se guardara el nombre de varios alumnos y su NIA, y hacer dos métodos para utilizar los hilos, por ejemplo impirmir el nombre del alumno por una parte y por otra imprimir el NIA, también nos pedía meter un retardo para simular el proceso Thread.sleep(2000);

 

P.D. ¿A alguien le va mal el blog? Para actualizar me ha costado más de lo normal… se me bloqueaba y perdía datos…

 

 

Ding Dong Ding…último aviso para los pasajeros del vuelo F0666 con destino Bikolandia

Comenzamos leyendo la práctica, ya queda poquito y hay que apurar el tiempo. Nos repartimos el trabajo, uno pregunta dudas del videojuego, mientras el otro se pone con la práctica. Compilamos Ding, compilamos Dong, DingDongPoor pero este tiene un pequeño fallo que nosotros debemos de solventar.  La solución que te dan es lanzar dos Threads, para realizar dos cosas a la vez: que imprima Ding cada vez que le das al INTRO y Dong cada segundo. Al principio cambiamos el código de TwoThreads y sólo conseguimos que imprima Dong, y al dar al Intro no ocurre nada. Después de 20 min comiendonos la cabeza, llegamos a la conclusión de que no hemos entendido como funciona jajaja así que empezamos otra vez. Bueno y esto es la respuesta para que funcione el Ding y el Dong a la vez, les hemos puesto comentarios para que si no lo habeis entendido os sirva de ayuda, o eso esperamos:

import java.io.IOException ;// para la excepción del Ding

 

class

TwoThreads
{

public static void Dong( ){
  try
{ while (true) // esto es un bucle del que nunca sale, porque si es true entra
//y mientras no pase el segundo  se queda ahí, hasta que vuelva a ser true. 

{Thread.sleep(1000);// Corre el tiempo

System.out.println(“DONG!”);//Imprime Dong!}

}
catch (InterruptedException e)

{

System.out.println(“Interrupted while sleeping”); }
}
public static void Ding() { 
 try

{

while (true)
{if (System.in.read() == ‘\n’)

 

System.out.println(“DING!”);}
}//try
catch (IOException e)

{

System.out.println(“IO error on System.in”);}
}//Ding
//Vamos a probar así que todo funciona
public static void main(String args[])

//Creamos un objeto de la clase r, donde se
//guardara lo que hace el método run

 Runnable r = new Runnable()

 {

public void run() {Ding();} };// el método run ejecuta el método Ding
Runnable s = new Runnable () // se crea otro objeto para hacer lo mismo
//pero con el Dong

{

public void run() {Dong();}
};
Thread t = new Thread(r); // creas un objeto de la clase Thread pasandole el
//parámetro r que lleva la infoermeación del método Dingt.start();
// ejecuta el método
t.start();
Thread k = new Thread (s); // lo mismo
k.start();
PrintThreadName();

}

}

Y así conseguimos que el Ding se imprima cada vez que pulsas ENTER y Dong al mismo tiempo se imprima cada 3 segundos.Espero que me haya explicado jajaja, sino poneis un comentario. El resto de la práctica lo intentaremos durante la semana. Saludos!!!

 

 

 

 

 

Y otra más…suma y sigue

Y este título no es casual, pues basicamente es el principio de la recursividad que es de lo que iba un poquillo la práctica del viernes. Hoy actualizo yo, Illán, pues mi compañera tiene dolor de muelas, cuentitis y además está enamorada.

Yo siento ser así, pero no me mola poner código directamente, lo siento Biko, recuerda, soy el borde de la relación. Asique me dispongo a relataros lo que a continuación podriamos denominar práctica rara.

Y es rara porque de pronto…TACHANNN!!! Ejercicio sobre una tabla hash. Pues chachi, ¿cómo lo resolvimos? pues igual es trampa, pero básicamente nos descargamos la teoría de Jorge y el ejemplo de Tabla Hash lo adaptamos a lo que nos pedian(osea, le dimos la vuelta, lo pintamos de verde, y le sumamos el número pi)…no se, creo que es el principio de Java, coje lo que otros ya han echo y adáptalo a tus necesidades. De manera que, aceptamos barco.

Ejercico 2: Esto son de esos ejercicios de mira lo que hace y comprendelo, lo miramos y lo comprendimos. Lo de siempre si alguien tiene alguna duda, cuestión comentario o sugerencia que nos lo diga. Sólo así como curiosidad, el método p2 no sirve para nada, de verdad, osea cuando entendais lo que hace os dareis cuenta que cumple la fórmula b+sum(a). La cual sirve para poquito, pero que vamos que ahi queda.

Ejercicio 3: Resuelve con reursividad…nah! Este es el típico que se queda para casa porque tiene más miga y además es el ejercicio aburrido de bájate todo lo anterior y pinta de verde la señal y no hay tanto tiempo, además que en nuestro juego tenemos también cosicas asi.

El juego está en progreso, el tema de interfaz gráfica es cada vez más compicado, y yo me pregunto ¿Es java un buen lenguaje de programación para programar un entorno gráfico? mi respuesta es no, seguro que difiere muy mucho con la de Jose Jesús pero bueno…tampoco podemos esperar mucho de un lenguaje que se construyó para programar lavadoras.

Y ya para finalizar, un tributo, porque el hombre del sombrero ha vuelto, y el 22 de mayo llega a las pantallas para deleitarnos con otra de sus aventuras.Espero que vayais a verla

Indiana Jones y el reino de la calavera de cristal

Nueva práctica y nuevo compañero

Hola soy Biko y está semana vengo acompañada jajaja, hemos hecho una alianza Illán y yo para afrontar esta asignatura jajaja. Bueno el primer día como compañeros genial, vamos que muchísimo mejor que estar sola jajaja, es más dinámico. Nuestro primer reto La práctica consistía en modificar la clase Cola de la práctica anterior y usar en su lugar Vectores, que es una cosa práctica, pero más difícil de entender. Bueno cogiendo el Api debíamos sustituir en el código los arrays por vectores. Y nosotros probamos poniendolo así… pero no lo terminamos, esto es lo que nos dio tiempo a hacer:

import (que si no, no va)java.util.Vector;
class Cola
{
int primero, ultimo;

/** Construcción */
public Cola(int numElementos)
{
/** Damos tamaño al array, se inicializan a null */
Vector v = new Vector(numElementos+1);
// +1 porque tenemos que dejar un hueco libre para
// distinguir la condición vacía de llena.
// Muy importante este hueco para distinguir la cola vacía de la llena
primero = 0;
ultimo = 0;
} // ColaPiezas

/** La cola estará vacía cuando el primero esté en la misma posición que el último */
public boolean vacia()
{
return (primero == ultimo);
}

/** Nos dice si la cola esta llena */
public boolean llena()
{
return siguiente(ultimo) == primero;
}

/** Inserta una pieza en la cola. No hacemos comprobación de cola llena */
public void encolar(Pieza pieza)
{
v(ultimo) = pieza;
ultimo = siguiente(ultimo);

}

/** Desencolamos el primer elemento de la cola */
public Pieza desencolar()
{
Pieza elemento = v(primero);
primero = siguiente(primero);
return elemento;
}

/** Recorrido circular */
private int siguiente(int indice)
{
return (indice + 1) % (elementos.length);
}

} // ColaPiezas

 

Y en homenaje a la alianza… Esta foto… jajaja que ni la mitad de nuestra generación se acuerda…

BIKIÑOS!!!!

6ºDia:”TETRIS”

Buenas!! Una semana más aqui hay que dejar la huella de lo que hicimos en clase… es como un chivatazo a los jefes de lo que hacen nuestros profesores también no? jajaja

El viernes con Pablo Basanta hicimos una puesta en común para saber como deberíamos pensar a la hora de hacer nuestro videojuego. Para ello me saco a la pizarra :S … Nunca me gustó salir a la pizarra jajaja …. mientras tu intentas entender lo que te está indicando el profesor que hagas… tus compañeros te ponen muecas y te lanzan sonrisitas maliciosas… jajaja y encima me dijo que el próximo día me iba a sacar otra vez …

Bueno a lo que iba, en la pizarra hicimos 3 clases ( el que llevaría el main, la clase Pieza y la clase Cola). Les añadimos sus atributos y métodos, y consideramos que la clase Pieza era abstract, clase base de los tipos de Pieza : la L, la T , el cuadrado, el 4 invertido y la Línea. A estos les añadimos los atributos de Color y Posición, y métodos como pintar(), mover(), y nombrePieza(), este último abstract.

Y bueno acabamos de implementar todo, y nos quedo el esqueleto de lo que sería nuestro videojuego… Y ahora a ver si me pongo con el mio, que me he quedado sola y no sé por donde cogerlo. ¡¡Suerte a todos!!

¡¡Muchos Besos!!

28-Marzo-08 Pintar un cuadro

4ª Práctica… Antes de Semana Santa…

Por fin… que pava soy… no podía entrar en mi cuenta… había perdido la contraseña y el correo me iba fatal… bueno … que Biko(yo) me quedo sola… bueno que Victor me abandona… le ha salido un curro, sospechosamente bonito, así que la carrera la deja aparcada… No soy la única afectada, quien lo diría … jajaja, que cruel parezco… en realidad es muy majo el chico,pero me desesperaba . En fin a lo que iba que por fin puedo actualizar. Esto es lo que hicimos la semana… antes de Semana Santa el día 14 de Marzo…

Lo de siempre tardamos en prepararnos entre 5 y 10 minutos, nos leemos la práctica para seguirla paso a paso como una receta… pero nunca la llegamos a acabar… Herencia…

1º Tenemos que completar el código de la clase Miembro, que es la clase base. Necesitaremos la clase de la semana anterior, la de Modificador, porque los atributos comunes de todas las clases que heredan de Miembro son Nombre y Modificador. Hay que recordar que para el método toString hay que poner Modifier.toString(modificadores) (importando java.lang.reflect.Modifier) aunque también me funcionó poniendo Modificador.toString(modificadores) sin necesidad de importar nada (esto no entiendo porque pasa… pero no se si es importante…

2º Tenemos que implementar la clase Atributo que hereda de Miembro,  para ello sólo hace falta añadir extends miembro. Otra cosa que cambia es en el constructor, que los parametros que pasas que son comunes en todas las clases que heredan de Miembro no hace falta poner el this. , sino super(nombre, modificadores), el resto de los parametros (en este caso tipo) se pone el this.tipo= tipo;

3ºPara implementar la clase Método necesitaremos la clase Parametro implementada en la práctica anterior, tendremos que hacer un array de parametros, que iremos rellenando con un bucle for y el método toString.

public String toString(){

String x= ”Metodo: ” + super.toString()+ “Tipo de retorno: “+ retorno;// creamos un String con los datos que tenemos

for (int i =0;i<parametros.length;i++){

x= x+ ” Parametro: (” +i+parametros[i].toString();

}//la cadena se completa con la lista de parametros

return x;} // del bucle

4º Implementar la clase Constructor que herede de Miembro, también necesita la clase Parametro. Es muy parecido al anterior.

y el resto de la “receta” no la hemos terminado… así que esperemos que la próxima no sea continuación que sino se nos acumula el trabajo jajaja. Saludos !!!!!

      
 

Tercer día: 7-IV-2008

Otro día más de prácticas, otro madrugón y ponernos delante de la pantalla a trabajar (aunque esta vez la habíamos leído en casa para ver que había que hacer). Con un sueño que ni te cuento, pero bueno no era muy complicado, rellenar programas casi hechos, responder a preguntillas básicas…

Nosotros nos retrasamos un poco con respecto al resto porque nos atrancabamos en cosas que no teníamos muy claras, pero por lo menos algo resolvimos.

Nos atrancamos en lo del contador, resulta que teníamos que llamar a un atributo del constructor, desde otra clase, y basta con poner lo siguiente:

System.out.println(Punto.contador);

Nos explicaron que eran los modificadores de acceso, y cómo obtener el modificador a partir de un número que pasamos por pantalla.

Y poco más, era un poco monótono pero producente. A ver el último día antes de Semana Santa… recordar también que después de Semana Santa se tiene que hacer una entrega del videojuego. Eso lo vemos más complicado pero habrá que intentarlo, ¿alguien sabe que hay que poner más o menos en esa entrega?

Hasta la semana que viene Pecadoresss!!!

//////////////////////////////////// 

((Dudas: con lo del main, en la clase PruebaDatos no pusimos el main, y nos salió error, le preguntamos al profesor y nos dijo que teníamos que ponerlo por no sé que, pero su explicación no nos quedó muy clara, si alguno puede ayudarnos!!! os lo agradeceríamos))