El Juego de la Oca…

Abril 24, 2008

Bueno, el viernes hicimos la entrega del juego, pero sólo la parte del código..la parte de la interfaz gráfica está todavía por hacer..

En cuanto a funcionamiento el juego está bien( es el juego de la oca), pero lo que pasa es que cuando lo ejecutamos, el juego avanza solo, es decir, nadie le da a ningún “botón” para que el jugador1 y el jugador2 tiren el dado, esto está programado para que en cuanto cambie el turno,se tire el dado automáticamente. Queremos mejorar esto, ya que realmente no se está jugando..

Entonces nuestra duda es de qué manera podemos hacer para que, cuando, por ejemplo, le toque al jugador2, no se tire el dado directamente, sino que el lanzamiento del dado se accione por algún mecanismo, como presionar el ENTER o algo parecido.

Esperamos que alguien nos pueda echar una mano. Saludos.


Práctica 6

Abril 10, 2008

De nuevo un Viernes en los laboratorios de informatica del Juan Benet para realizar la practica 6.

Para hacer esta práctica eran necesarias las clases Pieza y la clase Cola, que eran las que habi que implementar.
Empezamos con la clase Pieza:
Esta clase es la encargada de modelar a una pieza;se definen 3 atributos,que en nuestro caso los definimos como “private”, por lo que luego los metodos de acceso a los mismos los definimos como “public”.Esto lo hacemos así para que desde clases externas no se pueda acceder directamente a los atributos y modificarlos.
Los 3 atributos son “int x”, “int y”, que son los encargados de la posición de la pieza, y después un atributo “char tipo”, que se encarga de definir la forma fisica de la pieza. Una duda que tenemos con respecto a este atributo es de si se podía haber de alguna otra forma.
En cuanto a metodos y contructor, tiene un constructor al que se le pasa como parametro el tipo de pieza=> public Pieza(char tipo).
Hay un metodo mover, el cual en este caso lo implementamos vacio,es decir, no hara nada cuando éste sea invocado.
La mayor duda la tenemos en el método toString. Pedimos ayuda a unas compañeras y nos dijeron que ra de la siguiente forma:

public String toString(){

return Character.toString(tipo);
}
Cuando lo vimos nos recordó bastante a la forma de algunos métodos que si que conocíamos como Integer.parseInt(String), pero no lo acabamos de entender, asi que si alguien nos puede echar una mano se lo agradeceríamos.
Aquí acababa nuestra clase Pieza.

Seguimos con la clase Cola:
Esta será la clase encargada de almacenar las distintas piezas modeladas en la clase Pieza.
Como atributos necesitamos 3: “int numElementos” que indica el tamaño de la Cola, “int posicion” que hará la función de un índice, y por último, un array de piezas donde relamente se almacenan éstas

Pieza[] piezas; //el array se llamara piezas.

En el constructor, se creará el array con un tamaño que se le pasará como argumento.Además, como se crea vacío, nuestro indice apuntara a la última posición ocupada, que es “-1″.
También tendrá sus respectivos métodos para comprobar si el array está lleno o está vacío.Hay 2 formas parecidas de implementar estos métodos.

1º. public boolean llena(){
return(posicion==piezas.length -1);
}

2º. public boolean llena(){
if(posicion==piezas.length-1)
return true;
else
return false;
}
Nosotros usamos la primera opción porque es la forma más corta.
Como toda Cola tiene sus métodos, desencolar y encolar.

Encolar:

public void encolar(Pieza p){
posicion++;
Pieza[posicion]piezas= Pieza p;

}

Como el índice estaba apuntando al empezar a “-1″, es necesario incrementarlo antes de “meter” la pieza en el array.Esto sucedera siempre que se quiera meter una pieza en el array(excepto cuando esté llena).

Desencolar:
En este método ya teníamos más problemas, porque no sabíamos exactamente cómo sacar los Objetos Pieza de forma adecuada. En la clase de teoría nos explicaron que una forma de implementar la Cola sería con 2 índices. Como en este caso sólo disponemos de un indice, nosotros lo hemos hecho de la siguiente manera:

public Pieza desencolar(){

for(int i=piezas.length-1;i>=0;i–){
if(piezas[i]!=null)
return(piezas[i]);
break;
}
}

Nuesta idea es, que cuando se invoque a este metodo, se desencole el último objeto del array, por eso recorremos el array desde el final hasta el principio, y si vemos que la posición del array está vacia( null) pues seguimos hasta que se encuntre una que no lo esté. Dudamos en que el mecanismo para que “pare” funciona, porque después de la sentencia return ya no se ejecutaría nada, y por tanto el “break” nunca se ejecutaría.
Si alguien nos puede explicar un poco cual sería la forma de hacer este método se lo agradeceríamos:).

Parece que esta práctica se nos ha dado bastante mejor, alomejor con eso de ser el Tetris pues nos resultaba más…¿familiar?, haciendonos recordar los vicios de este juego con GameBoy de cuando eramos crios… ¡ que tiempos aquellos ! XD


Práctica 5

Abril 10, 2008

Empezamos la quinta practica con una explicación sobre el Polimorfismo, dándonos su definición y sus dos formas principales de manifestación:

la sobrecarga (varios métodos con igual nombre pero distinta lista de parámetros) y la sobreescritura (cuando la subclase es la que implementa el método heredado de la superclase).También se nos describía que es método abstracto (aquel que no tiene implementación), y que es un interfaz (un “contrato de comportamiento” para una clase, definición así…de andar por casa…).

 

Ejercicio 1

 

Este ejercicio consistía en modificar el método toString utilizando la palabra “super” característica de la herencia.

Después en la clase Clase (valga la redundancia) había que comprobar lo que ocurría si escribíamos str += miembros[i].toString() en el método toString.

Terminamos cayendo en la cuenta que en el array cada elemento, según sea su tipo (atributo, método o constructor), llama al método toString del tipo al que pertenece en la posición concreta del array.

Luego se nos pedía buscar las clases que heredan de la clase Object… ¿dónde?…

pues en “la Biblia” de Java: el Api, donde sino…

 

Ejercicio 2

En este ejercicio íbamos a utilizar las interfaces, se nos describe una determinada funcionalidad para los objetos de Clase y nos definían el código de la interfaz Almacenable.

Para solucionar lo primero que nos pedían, había que buscar en el API el paquete java io y la clase FileReader.

Aquí nos quedamos mirando como funcionaba esta clase FileReader pero el reloj marcaba ya las 11 y era hora de acabar la clase.

Haber que tal se nos da la siguiente…

 


Práctica 4

Abril 3, 2008

Llegamos otro Viernes a primera hora al aula 7.0.J02 para disponernos a darlo todo (todo lo que podamos, mejor dicho) para la clase practica de OCA.
Hoy toca herencia.

Ejercicio 1

En este ejercicio nos daban implementada una clase Miembro que denominaban “clase base” o “superclase”, y nos planteaban una cuestión:
¿Qué pasaría si se cambiara protected por private en nuestra jerarquía de clases?
Lo que pasaría es que las clases derivadas de la superclase, solo se podría acceder a sus atributos mediante los métodos de acceso y no directamente con el atributo.

Ejercicio 2

Aquí nos daban una clase Atributo que deriva de Miembro y nos preguntaban cuál es la palabra reservada de Java que se usa para hacer referencia a la clase base desde una clase derivada.
La respuesta a esta pregunta, era la palabra “super”.
Seguidamente completamos el esqueleto de la clase Atributo que nos daban, y utilizamos en ella la palabra reservada “super”.

Ejercicio 3

Este ejercicio es muy parecido al 2.
Usamos la palabra reservada “super” para implementar los atributos que hereda de la clase base.

Ejercicio 4

Esta vez se nos da una clase Constructor que hereda de Método.
La primera duda aparece: los métodos de Constructor no tiene tipo de retorno (nada de nada, ni siquiera un “void”). Seguimos leyendo y la solución nos la da la Nota1: hay que añadir “” (cadena vacía) en el lugar donde debería estar el tipo de retorno.
De esta manera pudimos implementar la clase Constructor.

Ejercicio 5

No nos dio tiempo a acabar este ejercicio debido a su complejidad y que ya era casi la hora de marcharnos.

Con esto acabamos la practica 4, esperemos que el descansar (o no) en Semana Santa nos siente bien y lleguemos con más ganas, más lucidez y más… kilitos con tanta torrija… eso seguro… ;)


Practica 3

Abril 3, 2008

Bueno, pues con algo de retraso ya está aqui…mas vale tarde que nunca.
Vamos a ello.
Ejercicio 0:
Es una especie de introduccion para recalcar ciertos aspectos que tienen que quedar muy claros antes de empezar la practica. Realmente no tiene nada de complicado, asi que lo unico es hacer la clase de prueba y verificar que se hace lo que le pedimos.

Ejercicio 1:
Realmente este jercicio nos sirvió para aprender mas tipos de modificadores, ya que conocíamos bien poquitos. Hay una duda en este aprtado,¿si metemos como argumentos un número que supera cualquier combinacion, cual sería el resultado?

Ejercicio 2:

En un principio no entendimos muy bien qué era lo que realmente teniamos que hacer, pero despues de leer 2 o 3 veces el enunciado lo comprendimos. La dificultad nos llego cuando teniamos que hacer el metodo toString. No habiamos entendido bien la funcion del toString de la clase modificador, pero al final lo sacamos.

Ejercicio 3:

Este ejercicio se hace practicamente igual al anterior, solo que en la clase constructor no tiene ningun tipo de retorno, mientras que en la clase metodo si.

Con el ejercicio 4 nos llegaron todas las dudas..no sabíamos muy bien como abarcarlo; despues de haber mirado en algunos blog y demás nos nos ha quedado demasiado claro( somo poco habiles ;) )asi que habra que ir a alguna tutoría.

Si conseguimos entender el ejercicio 4  seguiremos con el resto de los ejercicios.


Práctica 2

Marzo 5, 2008

Viernes, 9 de la mañana, otra vez un sueño considerable, y el año 2008 nos regala un dia extra en este mes de Febrero para… dedicarlo a OCA. 

- La práctica empieza con un ejercicio que nos resultó “fácil” para lo que es esta asignatura.

Consistía en establecer nuestro “entorno de trabajo” configurando la variable CLASSPATH. que indica al sistema el directorio en el que se localizan las clases que del programa que vamos a programar (valga la redundancia…).

A pesar desu sencillez, aún no tenemos mucha práctica a la hora de buscar cosas en API de java, ya que no la hemos utilizado mucho que digamos.

Después de pensar en la ecuación de 2º grado nos pusimos animados con el siguiente ejercicio.

- Este ya parecía mas complicado… Aunque el profesor de prácticas estuvo un rato explicando aserciones y demás… a la hora de plasmarlo en código parecía un tarea mas compleja.

Como se preguntaba en el primer apartado, la compilación se realizaba sin errores, pero en la ejecución se producía un error tipo java.lang.ArithmeticException: / by zero… y vimos que el problema era que se dividía entre d=0.

Después, una de las dudas que nos surgieron, era si debíamos de poner el mensaje de error como un System.out.print o System.err. ; entonces leyendo el enunciado de nuevo y fisgando un poco en el código de algún compañero vemos que se utiliza la segunda opción (cosa que intuíamos pero que dudábamos…)

Cómo este ejercicio se nos alargó hasta que terminó la clase y el resto quedaron pendientes para otro momento, no muy lejano…


Practica de “repaso”

Febrero 26, 2008

Viernes a las 9 de la mañana, un sueño considerable y nos ponemos a intentar sacar algo en claro, en concreto, de la practica, y en general de esta asignatura. Solamente llegamos hasta el Ejercicio 3, quizá por falta de conocimientos o por falta de tiempo… o por ambas cosas.

El primer problema surge en el Ejercicio 0:

- Como editor de textos, siempre hemos utilizado el jGrasp. Por lo visto, no es lo mas indicado. Cuanto más sencillo sea, mejor se aprende…incluso dijo que era mejor el NotePad…

- El resto de definiciones, las desconociamos practicamente todas. Sacamos en claro lo que es el “path”, la jre y la API de Java.

Habiendo quedado mas o menos claro el ejercicio anterior, nos ponemos con el 1:

- Sencillo, simplemente habia que copiar el codigo que te daban, y utilizar un bucle “for” para la repeticion de “Hello World”.

En el Ejercicio 2:

- Los primeros apartados los hicimos sin problemas.

- El problema llega con la frase “¡Cuidado con no imprimir un espacio extra al final!”. En primer lugar, al hacerlo con un bucle “for” para recorrer el array (args), nos salía con el espacio al final. Esto lo solucionamos metiendo el “for” en una estructura ”if-else”.

En cuanto al Ejercicio 3, al aparecer un “try-catch” en los cuales no habiamos profundizado mucho en RDA, no lo supimos hacer.

El resto de ejercicios, no nos dio tiempo a hacerlos en clase, por lo que intentaremos acabarlos en casa, porque como alguien nos dijo una vez…”Esto, con tiempo y una caña… se saca”. 


Presentación

Febrero 26, 2008

¡¡Hola!!

Somos Alberto y Luis, alumnos de la Universidad Carlos III de Madrid, y este es el blog donde describiremos nuestras experiencias en Java en clase de Organizacion de Contenidos Audiovisuales (más conocida como OCA).

Saludos a tod@s.