<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Julitros2008's Weblog</title>
	<atom:link href="http://julitros2008.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://julitros2008.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 19 Aug 2008 13:11:28 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='julitros2008.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/7a613c389c118a903c8e1081f8dc7b08?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Julitros2008's Weblog</title>
		<link>http://julitros2008.wordpress.com</link>
	</image>
			<item>
		<title>Ejercicio 4</title>
		<link>http://julitros2008.wordpress.com/2008/08/19/ejercicio-4/</link>
		<comments>http://julitros2008.wordpress.com/2008/08/19/ejercicio-4/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 13:11:28 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=37</guid>
		<description><![CDATA[Bueno, vamos a por la publicación del cuarto y ultimo ejercicio que trata de JMF, la verdad es que no tenia ni idea (y todavía ahora hay alguna) pero con este ejercicio me han quedado algo más claros los conceptos&#8230;..o al menos eso espero&#8230;jajaja&#8230;
Ejercicio 4

En esta ocasión se trata de realizar un reproductor de contenidos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=37&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bueno, vamos a por la publicación del cuarto y ultimo ejercicio que trata de JMF, la verdad es que no tenia ni idea (y todavía ahora hay alguna) pero con este ejercicio me han quedado algo más claros los conceptos&#8230;..o al menos eso espero&#8230;jajaja&#8230;</p>
<p class="MsoNormal" style="text-align:center;" align="center"><strong><span style="text-decoration:underline;"><span style="font-size:18pt;">Ejercicio 4</span></span></strong></p>
<p class="MsoNormal">
<p class="MsoNormal">En esta ocasión se trata de realizar un reproductor de contenidos multimedia usando para ello los conocimiento básicos que de JMF hemos ida adquiriendo.</p>
<p class="MsoNormal">
<p class="MsoNormal">Para la realización del ejercicio deberemos de suponer dos cosas:</p>
<p class="MsoNormal" style="margin-left:35.4pt;">1º) Si al reproducir un fichero de audio le pido al placer que me dé la<span> </span>componente de video me devolverá un null.</p>
<p class="MsoNormal" style="margin-left:35.4pt;">2º) Para averiguar cuanto tiempo dura la reproducción de un fragmento de audio o de video lo haremos por el camino cutre para no tener que preguntar a la API de JMF; reproduciremos dicho fragmento, sin visualizarlo, y por medios ajenos al JMF mediremos cuanto tiempo ha tardado en reproducirse.(en mi caso lo he hecho llamando al getDuration de la clase duration porque no he conseguido saber como hacer para reproducir un fragmento sin que éste se vea, quizás porque tampoco he llegado a entender muy bien en que momento real se empieza a reproducir un archivo en las líneas de código que he podido ver de JMF).</p>
<p class="MsoNormal">
<p class="MsoNormal">Este reproductor, además, recibirá una lista de archivos por línea de comandos como argumentos de entrada y deberá imprimir por consola el nombre de cada archivo, si es de video o de audio y la duración.</p>
<p class="MsoNormal">Los archivos se pasarán de la siguiente manera a la hora de compilar:</p>
<p class="MsoNormal"><a href="http://julitros2008.files.wordpress.com/2008/08/image1.jpg"><img class="alignnone size-medium wp-image-38" src="http://julitros2008.files.wordpress.com/2008/08/image1.jpg?w=300&#038;h=149" alt="" width="300" height="149" /></a></p>
<p class="MsoNormal"><!--[if gte vml 1]&gt;                    &lt;![endif]--><!--[if !vml]--><!--[endif]--></p>
<p class="MsoNormal">Y a continuación la lista de archivos:</p>
<p class="MsoNormal"><a href="http://julitros2008.files.wordpress.com/2008/08/image2.jpg"><img class="alignnone size-medium wp-image-39" src="http://julitros2008.files.wordpress.com/2008/08/image2.jpg?w=300&#038;h=152" alt="" width="300" height="152" /></a></p>
<p class="MsoNormal"><!--[if gte vml 1]&gt;  &lt;![endif]--><!--[if !vml]--><!--[endif]--></p>
<p class="MsoNormal">
<p class="MsoNormal">Después de esto deberá reproducir de forma cíclica (cuando pare deberá volver a empezar) el de menor duración, ya sea de audio o de video.</p>
<p class="MsoNormal">Para la realización de este ejercicio puede ayudarse de los siguientes métodos del API de JMF.</p>
<h2><span style="font-size:10pt;" lang="EN-GB">java.net</span><span lang="EN-GB"><br />
<span style="text-decoration:underline;">Class URL</span></span></h2>
<pre><a title="class in java.lang" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span lang="EN-GB">java.lang.Object</span></a>
<span lang="EN-GB"><span>  </span></span><!--[if gte vml 1]&gt;-->

<!--[if !vml]--><img src="/DOCUME~1/Regi/CONFIG~1/Temp/msohtml1/01/clip_image005.gif" border="0" alt="extended by " width="15" height="14" /><!--[endif]--><strong><span lang="EN-GB">java.net.URL</span></strong></pre>
<p class="MsoNormal"><strong><span lang="EN-GB">All Implemented Interfaces:</span></strong><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin-left:36pt;"><a title="interface in java.io" href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html"><span lang="EN-GB">Serializable</span></a></p>
<h3><em><span lang="EN-GB">getFile</span></em></h3>
<pre><span lang="EN-GB">public </span><a title="class in java.lang" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"><span lang="EN-GB">String</span></a><span> <strong><span lang="EN-GB">getFile</span></strong><span lang="EN-GB">()</span></span></pre>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">Gets the file name of this </span><code><span style="font-size:10pt;" lang="EN-GB">URL</span></code><span lang="EN-GB">. The returned file portion will be the same as </span><code><span style="font-size:10pt;" lang="EN-GB">getPath()</span></code><span lang="EN-GB">, plus the concatenation of the value of </span><code><span style="font-size:10pt;" lang="EN-GB">getQuery()</span></code><span lang="EN-GB">, if any. If there is no query portion, this method and </span><code><span style="font-size:10pt;" lang="EN-GB">getPath()</span></code><span lang="EN-GB"> will return identical results. </span></p>
<p class="MsoNormal" style="margin-left:36pt;"><strong><span lang="EN-GB">Returns:</span></strong></p>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">the file name of this </span><code><span style="font-size:10pt;" lang="EN-GB">URL</span></code><span lang="EN-GB">, or an empty string if one does not exist</span></p>
<h2><span style="font-size:10pt;" lang="EN-GB">javax.media</span><span lang="EN-GB"><br />
<span style="text-decoration:underline;">Class Time</span></span></h2>
<pre><span lang="EN-GB">java.lang.Object</span>
<span lang="EN-GB"><span>  </span>|</span>
<span lang="EN-GB"><span>  </span>+--<strong>javax.media.Time</strong></span></pre>
<p class="MsoNormal"><code><span style="font-size:10pt;" lang="EN-GB"> </span></code></p>
<h3><em><span lang="EN-GB">getSeconds</span></em></h3>
<pre><span lang="EN-GB">public double <strong>getSeconds</strong>()</span></pre>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">Gets the time value in seconds.</span></p>
<p class="MsoNormal" style="margin-left:36pt;"><strong><span lang="EN-GB">Returns:</span></strong></p>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">time value in seconds.</span></p>
<h2><span style="font-size:10pt;" lang="EN-GB">javax.xml.datatype</span><span lang="EN-GB"><br />
<span style="text-decoration:underline;">Class Duration</span></span></h2>
<pre><a title="class in java.lang" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html"><span lang="EN-GB">java.lang.Object</span></a>
<span lang="EN-GB"><span>  </span></span><!--[if gte vml 1]&gt;-->

<!--[if !vml]--><img src="/DOCUME~1/Regi/CONFIG~1/Temp/msohtml1/01/clip_image005.gif" border="0" alt="extended by " width="15" height="14" /><!--[endif]--><strong>javax.xml.datatype.Duration</strong></pre>
<h2><span style="font-size:10pt;" lang="EN-GB">javax.media</span><span lang="EN-GB"><br />
<span style="text-decoration:underline;">Interface Duration</span></span></h2>
<p class="MsoNormal"><strong><span lang="EN-GB">All Known Subinterfaces:</span></strong><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin-left:36pt;"><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Controller.html"><span lang="EN-GB">Controller</span></a><span lang="EN-GB">, </span><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Demultiplexer.html"><span lang="EN-GB">Demultiplexer</span></a><span lang="EN-GB">, </span><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Player.html"><span lang="EN-GB">Player</span></a><span lang="EN-GB">, </span><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Processor.html"><span lang="EN-GB">Processor</span></a><span lang="EN-GB">, </span><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Track.html"><span lang="EN-GB">Track</span></a></p>
<p class="MsoNormal"><strong><span lang="EN-GB">All Known Implementing Classes:</span></strong><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin-left:36pt;"><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/protocol/DataSource.html"><span lang="EN-GB">DataSource</span></a></p>
<h3><em><span lang="EN-GB">getDuration</span></em></h3>
<pre><span lang="EN-GB">public </span><a href="http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/apidocs/javax/media/Time.html"><span lang="EN-GB">Time</span></a><span> <strong><span lang="EN-GB">getDuration</span></strong><span lang="EN-GB">()</span></span></pre>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">Get the duration of the media represented by this object. The value returned is the media&#8217;s duration when played at the default rate. If the duration can&#8217;t be determined (for example, the media object is presenting live video) </span><code><span style="font-size:10pt;" lang="EN-GB">getDuration</span></code><span lang="EN-GB"> returns </span><code><span style="font-size:10pt;" lang="EN-GB">DURATION_UNKNOWN</span></code><span lang="EN-GB">.</span></p>
<p class="MsoNormal" style="margin-left:36pt;"><strong><span lang="EN-GB">Returns:</span></strong></p>
<p class="MsoNormal" style="margin-left:36pt;"><span lang="EN-GB">A </span><code><span style="font-size:10pt;" lang="EN-GB">Time</span></code><span lang="EN-GB"> object representing the duration or DURATION_UNKNOWN.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> <em><strong>Conocimientos empleados:</strong></em></span></p>
<p class="MsoNormal">Basicamente en este ejercicio se trabaja casi en exclusiva con el API de JMF, asique es eso principalmente lo que hemos aprendido con este ejercicio, aunque he de decir, que al menos por mi parte no me ha quedado claro del todo, asique espero que con un par de cuestiones quede la cosa resuelta. ¿Alguien sabe por ejemplo como hacer que lea los archivos pero que no los reproduzca? Ahi queda eso por si alguien se anima a responder.</p>
<p class="MsoNormal">Bueno, a continuación os escribo mi solución de este ejercicio que consta unicamente de una clase:</p>
<p class="MsoNormal">import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;<br />
import java.lang.String;<br />
import java.net.URL;<br />
import java.net.MalformedURLException;<br />
import java.io.IOException;<br />
import javax.media.*;</p>
<p>public class Reproductor extends JFrame implements ControllerListener{</p>
<p>String archivo;<br />
long tiempo;//se intentara hacer con TimeMilliSecond<br />
double duracion;<br />
double duracionMin==10.000;//lo inicializo a un valor grande<br />
Player player=null;<br />
String tipoArchivo;<br />
Component visualComponent=null;<br />
Component controlComponent=null;<br />
Component progressBar=null;</p>
<p>public Mi_Reproductor(String [] args) {</p>
<p>this.getContentPane().setLayout(new BorderLayout());<br />
URL url = null;<br />
try{</p>
<p>//Vamos leyendo uno a uno los elementos del array con los nombres de los      //archivos y creando las url´s</p>
<p>for(int i =0 ; i&lt;args.length; i++){<br />
if ((url = new URL(args[i])) == null)<br />
System.err.println(&#8220;No se puede construir URL para el archivo&#8221;);</p>
<p>archivo=url.getFile();<br />
duracion=url.getDuration().getSeconds(); //getDuration() devuelve un objeto de la //clase Time<br />
if(player().getVisualComponent()==null){<br />
tipoArchivo=&#8221;audio&#8221;;<br />
}else tipoArchivo=&#8221;video&#8221;;</p>
<p>System.out.println(&#8220;El nombre del archivo de&#8221;+tipoArchivo+&#8221;es:&#8221;+archivo+&#8221;, y su    duración es: &#8220;+duracion+&#8221; segundos&#8221;);<br />
if(duracion&lt;duracionMin)<br />
duracionMin=duracion;</p>
<p>}<br />
//Aqui se busca cual es el archivo más corto para reproducirlo<br />
for(int i=0; i&lt;args.length; i++){<br />
url=new URL(args[i]);<br />
duracion=url.getDuration().getSeconds();<br />
if(duracion==duracionMin){<br />
player=Manager.createPlayer(url);<br />
player.addControllerListener(this);<br />
}</p>
<p>}<br />
catch (MalformedURLException e){<br />
System.err.println(&#8220;URL no valida&#8221;);<br />
}<br />
catch (IOException e){<br />
System.err.println(&#8220;Excepcion de Lectura/Escritura&#8221;);<br />
}<br />
catch (NoPlayerException e){<br />
System.err.println(&#8220;No existe reproductor&#8221;);<br />
}</p>
<p>player.start();</p>
<p>this.addWindowListener(new ManejadorVentana());</p>
<p>}</p>
<p>//Manejador de los eventos</p>
<p>public synchronized void controllerUpdate(ControllerEvent event){</p>
<p>if (player == null) return; //Miramos si el player está &#8220;vivo&#8221;</p>
<p>if (event instanceof RealizeCompleteEvent){  //Si el reproductor ha entrado correctamente en estado realizado</p>
<p>if((visualComponent = player.getVisualComponent()) != null){</p>
<p>this.getContentPane().add(&#8220;Center&#8221;,visualComponent);</p>
<p>}else this.getContentPane.remove(visualComponent); //quita la componente visual //cuando devuelve null(audio)</p>
<p>if ((controlComponent = player.getControlPanelComponent()) != null)</p>
<p>this.getContentPane().add(&#8220;South&#8221;,controlComponent);</p>
<p>validate();</p>
<p>}else if (event instanceof EndOfMediaEvent){ //Si se ha alcanzado el final de contenidoMM que está reproduciendo</p>
<p>player.setMediaTime(new Time(0)); //&#8221;Rebobinamos&#8221; el contenidoMM<br />
player.start();                   //Volvemos a reproducir</p>
<p>}else if (event instanceof ControllerErrorEvent){ //Si se produce un error //indeterminado en la reproducción.</p>
<p>player = null;<br />
System.err.println(((ControllerErrorEvent)event).getMessage());</p>
<p>}<br />
}<br />
public class ManejadorVentana extends windowAdapter{</p>
<p>public void windowClosing(WindowEvent e){</p>
<p>if(player!=null){<br />
player.stop();<br />
player.deallocated();<br />
}<br />
System.exit(0);<br />
}<br />
}</p>
<p class="MsoNormal">}</p>
<p class="MsoNormal">Pues hasta aqui los ejercicios veraniegos. Esperemos que nos sirvan para mucho y que tengamos todos la suficiente suerte como para que no nos echen de la carrera, hay que joderse, tanto sufrimiento ¿para qué?&#8230;..algún día lo sabremos&#8230;.SUERTE!!!!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=37&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/08/19/ejercicio-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>

		<media:content url="http://julitros2008.files.wordpress.com/2008/08/image1.jpg?w=300" medium="image" />

		<media:content url="http://julitros2008.files.wordpress.com/2008/08/image2.jpg?w=300" medium="image" />

		<media:content url="/DOCUME~1/Regi/CONFIG~1/Temp/msohtml1/01/clip_image005.gif" medium="image">
			<media:title type="html">extended by </media:title>
		</media:content>

		<media:content url="/DOCUME~1/Regi/CONFIG~1/Temp/msohtml1/01/clip_image005.gif" medium="image">
			<media:title type="html">extended by </media:title>
		</media:content>
	</item>
		<item>
		<title>Ejercicio 3</title>
		<link>http://julitros2008.wordpress.com/2008/08/11/ejercicio-3/</link>
		<comments>http://julitros2008.wordpress.com/2008/08/11/ejercicio-3/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 09:51:07 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=33</guid>
		<description><![CDATA[Bueno, pues aquí vamos con el tercero de esta serie de ejercicios veraniegos&#8230;la verdad es que creo que este es el que peor me ha salido de todos, además no he podido emplearle todo el tiempo que me hubiera gusado por diversos motivos, de todas formas hoy he seguido con el y me he puesto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=33&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bueno, pues aquí vamos con el tercero de esta serie de ejercicios veraniegos&#8230;la verdad es que creo que este es el que peor me ha salido de todos, además no he podido emplearle todo el tiempo que me hubiera gusado por diversos motivos, de todas formas hoy he seguido con el y me he puesto ha hacerlo en el entorno gráfico para poder llegar a acabarlo.</p>
<p>Ahi vamos con el enunciado:</p>
<p style="margin-bottom:0;"><span style="font-size:medium;">En esta ocasión vamos a implementar una versión más sencilla del clásico juego Arkanoid.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">Para ellos deberemos desarrollar cuatro clases.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">En primer lugar la clase Pantalla donde se incluirán todos lo necesaría para crear una ventana dividida en dos.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">Por un lado el lado derecho, que incluirán una pequeá frase detallando el objetivo del juego y un contador con el numero de rebotes conseguidos con la barra.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">Por otro lado el izquierdo. En el ioncluiremos una cuadrícula de 20&#215;30 que será en panel de juego.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">El juego comenzará en el momento en que se arranque la aplicación.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">En segundo lugar, la clase rebotador que deberá ser capaz de manejar una barra en la última linea de la cuadrícula que se mueva con el teclado de izquierda a derecha.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">En tercer lugar implementaremos la clase bola que se encargará de los movientos diagonales de éstos teniendo en cuenta que deberá rebotar contra las paredes y el rebotador.</span></p>
<p style="margin-bottom:0;"><span style="font-size:medium;">Por último, construiremos la clase Arranca, que contendrá el método main para iniciar la aplicación.</span></p>
<p style="margin-bottom:0;"><strong><em>Conocimientos empleados:</em></strong></p>
<p>-Herencia<br />
-Algoritmos.<br />
-swing.<br />
-Manejar eventos<br />
-Timer<br />
<strong><em>//CLASE PANTALLA</em></strong></p>
<p>import java.awt.*;<br />
import java.swing.*;</p>
<p>public class Pantalla extends JFrame{</p>
<p>JPanel derecha, izquierda;<br />
JLabel puntos;<br />
JLabel etiquetaRebotes;<br />
final int TAMAÑO_X = 20;<br />
final int TAMAÑO_Y = 30;<br />
Icon casilla, casilla_agua;<br />
Icon rebotador;<br />
JLabel tablero[][] = new JLabel[TAMAÑO_X][TAMAÑO_Y];<br />
int rebotes;<br />
int contador;</p>
<p>public pantalla(){</p>
<p>super(&#8220;Arkanoid&#8221;);</p>
<p>//Creacion del panel derecho.</p>
<p>JLabel instrucciones = new JLabel(&#8220;Consiga que la bola no caiga al agua&#8221;);<br />
derecha = new JPanel(new BorderLayout());<br />
derecha.add(instrucciones, BorderLayout.NORTH);<br />
puntos = new JLabel(Integer.toString(rebotes));<br />
derecha.add(puntos, BorderLayout.CENTER);<br />
etiquetaRebotes = new JLabel(&#8220;REBOTES&#8221;);<br />
derecha.add(etiquetaRebotes, BorderLayout.SOUTH);</p>
<p>//Creacion del panel izquierdo.</p>
<p>izquierda = new JPanel(new GridLayout(TAMAÑO_Y, TAMAÑO_X));</p>
<p>izquierda.setSize(TAMAÑO_X*TAMAÑO_Y, TAMAÑO_X*TAMAÑO_Y);</p>
<p>//Ciclo for para añadir posición del array y etiquetas de fondo</p>
<p>for(int i= 0; i&lt;TAMAÑO_Y; i++){</p>
<p>for(int j= 0; j&lt; TAMAÑO_X; j++){</p>
<p>casilla = new ImageIcon(&#8220;dibujos/casilla.jpg&#8221;);<br />
tablero[i][j]= new JLabel(casilla);<br />
tablero[i][j].setOpaque(true);<br />
if(i==0 || j==0 ||j==19){<br />
tablero[i][j] = new JLabel();<br />
tablero[i][j].setBackground(Color.BLACK);<br />
tablero[i][j].setOpaque(true);<br />
}<br />
izquierda.add(tablero[i][j]);<br />
}<br />
}<br />
casilla_agua = new ImageIcon(&#8220;dibujos/casilla_agua.jpg&#8221;);<br />
rebotador = new ImageIcon(&#8220;dibujos/rebotador.jpg&#8221;);</p>
<p>//Colocamos las casillas de la ultima fila.<br />
for(int i = 0; i&lt;8; i++){<br />
tablero[29][i]= new JLabel(casilla_agua);<br />
tablero[29][i].setOpaque(true);<br />
izquierda.add(tablero[29][i]);<br />
}<br />
for(int i = 8; i&lt;12; i++){<br />
tablero[29][i]= new JLabel(rebotador);<br />
tablero[29][i].setOpaque(true);<br />
izquierda.add(tablero[29][i]);<br />
}<br />
for(int i = 12; i&lt;20; i++){<br />
tablero[29][i]= new JLabel(casilla_agua);<br />
tablero[29][i].setOpaque(true);<br />
izquierda.add(tablero[29][i]);<br />
}</p>
<p>//Añadimos los paneles al contenedor.<br />
this.getContentPane().setLayout(new GridLayout(1,2));<br />
this.getContentPane().add(izquierda);<br />
this.getContentPane().add(derecha);<br />
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
this.setResizable(true);<br />
this.setSize(TAMAÑO_X*TAMAÑO_X, TAMAÑO_Y*TAMAÑO_Y);<br />
this.setVisible(true);<br />
}</p>
<p>}</p>
<p style="margin-bottom:0;"><strong><em>//CLASE REBOTADOR</em></strong></p>
<p>import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;</p>
<p>class Rebotador extends Pantalla implements KeyListener{</p>
<p>static int a=11;<br />
static int b=8;</p>
<p>Rebotador(){</p>
<p>super();<br />
}<br />
public void keyTyped(KeyEvent e){}<br />
public void keyReleased(KeyEvent e){}<br />
public void keyPressed(KeyEvent e){</p>
<p>switch(e.getkeyCode()){</p>
<p>case KeyEvent.VK_RIGHT:<br />
if(a==19){<br />
}else{<br />
a++;<br />
tablero[29][a].setIcon(rebotador);<br />
tablero[29][b].setIcon(casilla_agua);<br />
b++;<br />
}<br />
break;<br />
case KeyEvent.VK_LEFT:<br />
if(b==0){<br />
}else{<br />
b&#8211;;<br />
tablero[29][b].setIcon(rebotador);<br />
tablero[29][a].setIcon(casilla_agua);<br />
a&#8211;;<br />
}<br />
break;<br />
}<br />
}<br />
}</p>
<p style="margin-bottom:0;"><strong><em>//CLASE BOLA<br />
</em></strong><br />
import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;</p>
<p>class Bola extends Pantalla implements ActionListener{</p>
<p>Timer timer;<br />
int contador;<br />
Icon bola;<br />
int bolaX;<br />
int bolaY;</p>
<p>Bola(){</p>
<p>super();<br />
i=0;<br />
bolaX=9;<br />
bolaY=9;<br />
bola = new ImageIcon(&#8220;dibujos/bola.jpg&#8221;);<br />
timer = new Timer(500,this);<br />
timer.start();<br />
}<br />
public void mueveDerechaAbajo(){</p>
<p>tablero[bolaY][bolaX].setIcon(casilla);<br />
tablero[bolaY+1][bolaX+1].setIcon(bola);<br />
bolaX++;<br />
bolaY++;<br />
}<br />
public void mueveIzquierdaAbajo(){<br />
tablero[bolaY][bolaX].setIcon(casilla);<br />
tablero[bolaY-1][bolaX+1].setIcon(bola);<br />
bolaX++;<br />
bolaY&#8211;;<br />
}        }<br />
public void mueveDerechaArriba(){<br />
tablero[bolaY][bolaX].setIcon(casilla);<br />
tablero[bolaY-1][bolaX+1].setIcon(bola);<br />
bolaX++;<br />
bolaY&#8211;;</p>
<p>}<br />
public void mueveIzquierdaArriba(){<br />
tablero[bolaY][bolaX].setIcon(casilla);<br />
tablero[bolaY-1][bolaX-1].setIcon(bola);<br />
bolaX&#8211;;<br />
bolaY&#8211;;<br />
}</p>
<p>public void actionPerformed(ActionEvent e){</p>
<p>if(bolaX+1==19){<br />
this.mueveIzquierdaAbajo();<br />
}<br />
this.mueveDerechaAbajo();<br />
//Desde aqui se controlarán los eventos del timer, es decir, hay que resolver<br />
//los diferentes casos de que caiga la bola, rebote y demás.<br />
}<br />
}</p>
<p style="margin-bottom:0;"><strong><em>//CLASE ARRANCA</em></strong></p>
<p>class Arranca{</p>
<p>public static void main(String args[]){</p>
<p>Pantalla p = new Pantalla();<br />
}<br />
}</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=33&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/08/11/ejercicio-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
		<item>
		<title>Ejercicio 2</title>
		<link>http://julitros2008.wordpress.com/2008/07/31/ejercicio-2/</link>
		<comments>http://julitros2008.wordpress.com/2008/07/31/ejercicio-2/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 09:12:01 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=26</guid>
		<description><![CDATA[Bueno, pues vamos a publicar el segundo ejercicio&#8230;a ver como ha ido este.
En esta ocasión se trata de crear una estructura de datos compleja.
Para ello habra que desarrollar cuatro clases que describiremos a continuación teniendo en cuenta el siguiente esquema:


Clase Cola:
Deberá comportarse como una cola pero con la estructura de una lista enlazada, para ello [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=26&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bueno, pues vamos a publicar el segundo ejercicio&#8230;a ver como ha ido este.</p>
<p style="margin-bottom:0;"><span style="font-size:small;">En esta ocasión se trata de crear una estructura de datos compleja.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Para ello habra que desarrollar cuatro clases que describiremos a continuación teniendo en cuenta el siguiente esquema:</span></p>
<p style="margin-bottom:0;text-align:center;"><a href="http://julitros2008.files.wordpress.com/2008/07/esquema1.jpg"><img class="aligncenter size-full wp-image-28" src="http://julitros2008.files.wordpress.com/2008/07/esquema1.jpg?w=547&#038;h=205" alt="" width="547" height="205" /></a></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><strong><span style="font-size:small;">Clase Cola:</span></strong></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Deberá comportarse como una cola pero con la estructura de una lista enlazada, para ello habra            que implementar los siguientes métodos:</span></p>
<ol>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Encolar 	elementos (enqueue).</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Desencolar 	elementos (dequeue).</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Indicar 	si la cola está vacía.</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-size:small;"><span style="font-family:Times New Roman,serif;">Imprimir 	por pantalla todos los contenidos de la cola.</span> </span></p>
</li>
</ol>
<p style="margin-bottom:0;"><span style="font-size:small;">A su vez esta habrás que programar una <strong>clase nodo</strong> en la cual se almacenaran objectos de la clase Pila (que también implementatemos).</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">En esta clase habrá que implementar los métodos necesarios para que se comporte como lista enlazada.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Como ya hemos dicho, la clase cola almacenará en cada uno de sus nodos objetos de la clase Pila, que a su vez guardarán objetos de la clase Vector:</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Los métodos a desarrollar dentro de la <strong>clase Pila</strong> serán los siguientes:</span></p>
<ol>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Introducir 	un elemento en la pila (push).</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Extraer 	un elemento de la pila (pop).</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Indicar 	si la pila está vacía.</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;">Indicar 	si la pila está llena.</span></p>
</li>
<li>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Imprimir 	por pantalla todos los contenidos de la pila.</span></span></p>
</li>
</ol>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Cada posición de la pila corresponderá con una posición de un array, es decir, la estructura de la pila que desarrollemos deberá ser la de un array.</span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Por ultimo, tendremos la <strong>clase Prueba</strong> que contendrá el main y un método llamado crearVector(String vectorInicial[]).</span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Este vector inicial estará compuestos de los numeros enteros del uno al cuatro.</span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Para el desarrollo de este problema adjuntamos las siguientes lines del API de java:</span></span></p>
<h2><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="font-size:x-small;">java.util</span><br />
Class Vector&lt;E&gt;</span></span></h2>
<pre><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html">java.lang.Object</a>
  <img src="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" border="0" alt="extended by " width="15" height="14" align="bottom" /><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/AbstractCollection.html">java.util.AbstractCollection</a>&lt;E&gt;
      <img src="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" border="0" alt="extended by " width="15" height="14" align="bottom" /><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/AbstractList.html">java.util.AbstractList</a>&lt;E&gt;
          <img src="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" border="0" alt="extended by " width="15" height="14" align="bottom" /><strong>java.util.Vector&lt;E&gt;</strong></pre>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><code><span style="font-size:large;"><strong>Method Summary</strong></span></code><code> </code></span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><code><span style="font-size:x-small;">void</span></code> <code><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html#addElement%28E%29"><strong>addElement</strong></a></code><code>(<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html">E </a></code><code>obj):</code> Adds the specified component to the end of this vector, increasing 				its size by one. </span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><code><span style="font-size:x-small;"><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Enumeration.html">Enumeration</a>&lt;<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html">E</a>&gt;</span></code> <code><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html#elements%28%29"><strong>elements</strong></a></code><code>():</code> Returns an enumeration of the components of this vector. </span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><code><span style="font-size:x-small;">boolean</span></code> <code><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Enumeration.html#hasMoreElements%28%29"><strong>hasMoreElements</strong></a></code><code>():</code> Tests if this enumeration contains more elements. </span></span></p>
<p style="margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><code><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Enumeration.html#nextElement%28%29"><strong>nextElement</strong></a></code><code>():</code> Returns the next element of this enumeration if this enumeration object has 			at least one more element to provide.</span></span></p>
<p style="margin-bottom:0;">A continución escribiré cada una de las clases que se han descrito arriba:</p>
<p style="margin-bottom:0;">//CLASE COLA</p>
<p style="margin-bottom:0;">public class Cola{</p>
<p>Nodo Primero;<br />
Nodo Recorrido;</p>
<p>public Cola(){</p>
<p>Primero=null;<br />
Recorrido=null;<br />
}<br />
public boolean vacia(){</p>
<p>return(Primero==null);<br />
}</p>
<p>public void encolar(Pila p){<br />
Nodo N = new Nodo(p,Primero);<br />
Primero = N;<br />
}<br />
public void First(){<br />
Recorrido = Primero;<br />
}<br />
public Pila Next(){<br />
Pila p = null;<br />
if(Recorrido != null){<br />
p=Recorrido.Elemento();<br />
Recorrido=Recorrido.siguiente();<br />
}<br />
return p;<br />
}</p>
<p>public Nodo desencolar(){<br />
Nodo n = Primero;<br />
Primero = n.siguiente();<br />
return n;<br />
}</p>
<p>public Pila Current(){//No me queda muy claro que hace este método<br />
Pila p = null;<br />
if(Recorrido != null){<br />
p=Recorrido.Elemento();<br />
}<br />
return p;<br />
}</p>
<p>public void imprimir(){<br />
primero.imprimir();<br />
}</p>
<p>}</p>
<p style="margin-bottom:0;">//CLASE NODO</p>
<p style="margin-bottom:0;">class Nodo{</p>
<p>Nodo siguiente;<br />
Pila pila;</p>
<p>public Nodo(){<br />
siguiente=null;<br />
pila=null;<br />
}</p>
<p>public Nodo(Pila p, Nodo Siguiente){<br />
pila = p;<br />
this.siguiente = siguiente;<br />
}</p>
<p>public Nodo siguiente(){<br />
return siguiente;<br />
}</p>
<p>public Pila Elemento(){<br />
return pila;<br />
}</p>
<p>public void ActElemento(Pila p2){<br />
pila = p2;<br />
}</p>
<p>public void ActSiguiente(Nodo n){<br />
siguiente = n;<br />
}<br />
public void imprimir(){<br />
System.out,println(&#8220;El nodo tiene&#8221;);<br />
pila.imprimir();<br />
siguiente.siguiente();<br />
}<br />
}</p>
<p style="margin-bottom:0;">//CLASE PILA</p>
<p style="margin-bottom:0;">import java.util.Vector;<br />
import java.util.Enumeration;</p>
<p>class Pila{</p>
<p>private int numElementos;<br />
private int ultimo;<br />
private Vector elementos[];<br />
private Vector v;</p>
<p>Pila(int numElementos, Vector v){<br />
ultimo = -1;<br />
this.numElementos = numElementos;<br />
elementos = new Vector[numElementos];<br />
this.v = v;<br />
Nodo n = new Nodo();//Se crea el nodos con las pilas.<br />
}</p>
<p>public boolean vacia(){<br />
return(ultimo==-1);<br />
}</p>
<p>public boolean llena(){<br />
return(ultimo==numElementos);<br />
}</p>
<p>public void apilar(Vector v){<br />
ultimo++;<br />
elementos[ultimo]=v;<br />
}</p>
<p>public Vector desapilar(){<br />
Vector v;<br />
v = elementos[ultimo];<br />
ultimo&#8211;;<br />
return v;<br />
}</p>
<p>public void imprimir(){<br />
for(int i=0 ; i&lt;elementos.length ; i++){<br />
Enumeration e = v.elements();<br />
while(e.hasMoreElements()){<br />
String v = (String)e.nextElement();<br />
System.out.println(v);<br />
}<br />
}<br />
}<br />
}</p>
<p style="margin-bottom:0;">//CLASE PRUEBA</p>
<p style="margin-bottom:0;">import java.util.Vector;</p>
<p>public class Prueba{</p>
<p>String vectorInicial[]={&#8220;1&#8243;,&#8221;2&#8243;,&#8221;3&#8243;,&#8221;4&#8243;};<br />
int numElementos = 3;<br />
Vector v = new Vector();</p>
<p>public Vector crearVector(String vectorInicial[]){</p>
<p>for(int i = 0; i&lt;vectorInicial.length; i++)<br />
v.addElement(vectorInicial[i]);<br />
}<br />
public static void main(String args[]){<br />
crearVector(vectorInicial[]);<br />
Pila p = new Pila(numElementos,v);<br />
}<br />
}</p>
<p style="margin-bottom:0;">Finalmete escribiré una pequeña lista de los conceptos empleados en este ejercicio:<br />
-Listas enlazadas(aunque yo personalmente no he sido capaz de llegar a entender esto bien)<br />
-Pilas.<br />
-colas.<br />
-Clase Vector con sus metodos.</p>
<p style="margin-bottom:0;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=26&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/07/31/ejercicio-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>

		<media:content url="http://julitros2008.files.wordpress.com/2008/07/esquema1.jpg" medium="image" />

		<media:content url="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" medium="image">
			<media:title type="html">extended by </media:title>
		</media:content>

		<media:content url="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" medium="image">
			<media:title type="html">extended by </media:title>
		</media:content>

		<media:content url="http://java.sun.com/j2se/1.5.0/docs/api/resources/inherit.gif" medium="image">
			<media:title type="html">extended by </media:title>
		</media:content>
	</item>
		<item>
		<title>Ejercicio 1 de verano</title>
		<link>http://julitros2008.wordpress.com/2008/07/29/ejercicio-1-de-verano/</link>
		<comments>http://julitros2008.wordpress.com/2008/07/29/ejercicio-1-de-verano/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 10:34:59 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=23</guid>
		<description><![CDATA[Aqui esta el post de los ejercicios de verano, esperemos que nos sirvan para conseguir seguir en la carrera después de estos años&#8230;..puf!!!que miedo&#8230;..mucha suerte a todos!!!!
EJERCICIO 1
Este ejercicio consiste en programar cuatro clases y una interfaz que representarán un juego de rol
Para ello deberemos implementar lo siguiente:
1.1.Clase personaje.
Consistirá en una clase que englobará todas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=23&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="margin-bottom:0;">Aqui esta el post de los ejercicios de verano, esperemos que nos sirvan para conseguir seguir en la carrera después de estos años&#8230;..puf!!!que miedo&#8230;..mucha suerte a todos!!!!</p>
<p style="margin-bottom:0;text-align:center;"><strong>EJERCICIO 1</strong></p>
<p style="margin-bottom:0;">Este ejercicio consiste en programar cuatro clases y una interfaz que representarán un juego de rol</p>
<p style="margin-bottom:0;">Para ello deberemos implementar lo siguiente:</p>
<p style="margin-bottom:0;"><strong>1.1.Clase personaje</strong>.</p>
<p style="margin-bottom:0;">Consistirá en una clase que englobará todas las caraterísticas del resto de personajes, además, deberemos tener en cuenta que no se podrán crear instancias de ésta.</p>
<p style="margin-bottom:0;">La <span style="text-decoration:underline;">información</span> que ha de guardar será la siguiente:</p>
<p style="margin-bottom:0;">-Vida del personaje.</p>
<p style="margin-bottom:0;">-Fuerza.</p>
<p style="margin-bottom:0;">-Inteligencia.</p>
<p style="margin-bottom:0;">-Astucia.</p>
<p style="margin-bottom:0;">-Vigor inicial: Esta característica tendrá en todo momento el mismo valor para todos los 			personajes, esto es, si alguno cambia su vigor, el nuevo valor cambiará para todos.</p>
<p style="margin-bottom:0;">Además, los <span style="text-decoration:underline;">métodos</span> a implementar dentro de ésta clase serán;</p>
<p style="margin-bottom:0;">-Constructores: inicializarán la información del personaje y tomarán nota del objeto que los 			llamó, para que puedan llamarlo más tarde.</p>
<p style="margin-bottom:0;">-Métodos de acceso: A parte de cumplir su función, deberán notificar al método 					“personajeCambiado(Personaje)” del objeto que creo el personaje 					cada cambio que se produzca en la información de éste.</p>
<p style="margin-bottom:0;">Desde aquí habra que llamar al método personajeCambiado(Personaje) de la 			clase Prueba usando como objeto el que se ha usado para crear el personaje 			en cuestión.</p>
<p style="margin-bottom:0;">-Método “imprimir()”: sin implementar.</p>
<p style="margin-bottom:0;"><strong>1.2.Clase Guerrero:</strong></p>
<p style="margin-bottom:0;">Aparte de la información y de los métodos de Personaje añadirá los siguientes:</p>
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Información</span>:</p>
<p style="margin-bottom:0;">-Habilidad.</p>
<p style="margin-bottom:0;">-Puntería.</p>
<p style="margin-bottom:0;">-Una variable que cuente el número de guerreros que han sido creados.</p>
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Métodos</span>:</p>
<p style="margin-bottom:0;">-Método imprimir, que pintará en pantalla la información del personaje.</p>
<p style="margin-bottom:0;"><strong>1.3.Clase Maga</strong></p>
<p style="margin-bottom:0;">Actuará igual que guerrero, añadiendo:</p>
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Información</span>:</p>
<p style="margin-bottom:0;">-Magia.</p>
<p style="margin-bottom:0;">-Poder de luz.</p>
<p style="margin-bottom:0;">-Una variable que cuenta el número de magas que han sido creadas.</p>
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Métodos</span>:</p>
<p style="margin-bottom:0;">-Método imprimir: mostrará en pantalla la información del personaje.</p>
<p style="margin-bottom:0;">-Deberá implementar la interfaz &#8220;Hechicero&#8221;.</p>
<p style="margin-bottom:0;"><strong>1.4.Interfaz Hechicero:</strong></p>
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Métodos</span>:</p>
<p style="margin-bottom:0;">-Doblar magia.</p>
<p style="margin-bottom:0;">-Doblar poder de luz.</p>
<p style="margin-bottom:0;"><strong>1.5.Clase de Prueba.</strong></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="text-decoration:underline;">Métodos</span>:</p>
<p style="margin-bottom:0;">-main: Inicializará la variable vigor inicial con un entero de 300 y,</p>
<p style="margin-bottom:0;">a continuación creará una maga.</p>
<p style="margin-bottom:0;">-personajeCambiado(Personaje): recibirá un atributo de personaje e imprimirá</p>
<p style="margin-bottom:0;">por pantalla los cambias que haya habido en éste, es decir, se deberá</p>
<p style="margin-bottom:0;">llamar desde los métodos de acceso de las variables.</p>
<p style="margin-bottom:0;">(Considero que no es necesario añadir nada del API porque los métodos que se van a usar no son de gran dificultad).</p>
<p style="margin-bottom:0;">Bueno, a continuación, escribo las diferentes clase que he desarrollado siguiendo las directrices del enunciado.</p>
<p style="margin-bottom:0;"><em><strong>//CLASE PERSONAJE</strong></em></p>
<p>abstract class Personaje{<br />
int vida;<br />
int fuerza;<br />
int inteligencia;<br />
int astucia;<br />
public static int vigorInicial;</p>
<p style="margin-bottom:0;"><em>//CONSTRUCTOR QUE RECIBE VIGOR_INICIAL E INICIALIZA LOS ATRIBUTOS<br />
</em><br />
Personaje(int vigorInicial){<br />
vida=4;<br />
fuerza=300;<br />
inteligencia=150;<br />
astucia=200;<br />
this.vigorInicial=vigorInicial;</p>
<p>}<br />
<em>//METODOS PON Y DAME</em></p>
<p>public void ponVida(int vida){<br />
this.vida=vida;<br />
}<br />
public void ponFuerza(int fuerza){<br />
this.fuerza=fuerza;<br />
}<br />
public void ponInteligencia(int inteligencia){<br />
this.inteligencia=inteligencia;<br />
}<br />
public void ponAstucia(int astucia){<br />
this.astucia=astucia;<br />
}</p>
<p>public void dameVida(){<br />
return vida;<br />
}</p>
<p>public void dameFuerza(){<br />
return fuerza;<br />
}</p>
<p>public void dameIntreligencia(){<br />
return inteligencia;<br />
}</p>
<p>public void dameAstucia(){<br />
return astucia;<br />
}<br />
<em>//METODO ASBSTRACTO IMPRIMIR</em></p>
<p>abstract void imprimir();</p>
<p><em>}//CIERRE DE PERSONAJE</em></p>
<p><strong>//CLASE GUERRERO</strong></p>
<p>class Guerrero extends Personaje{</p>
<p>int habilidad;<br />
int punteria;<br />
int numGuerreros=0;<br />
Personaje Guerrero;<br />
Object o;</p>
<p>Guerrero(int vigorInicial, Object o){<br />
super(vigorIncial);<br />
this.o=o;<br />
habilidad=50;<br />
punteria=50;<br />
numGuerreros++;<br />
}<br />
public void ponHabilidad(int habilidad){<br />
this.habilidad=habilidad;<br />
o.personajeCambiado(Guerrero);<br />
}<br />
public void ponPunteria(int punteria){<br />
this.punteria=punteria;<br />
o.personajeCambiado(Guerrero);<br />
}<br />
public int dameHabilidad(){<br />
return habilidad;<br />
}<br />
public int damePunteria(){<br />
return punteria;<br />
}<br />
public void imprimir(){<br />
System.out.println(&#8220;El guerrero tiene las siguientes habilidades&#8221;);<br />
System.out.println(&#8220;VIDA: &#8220;+vida);<br />
System.out.println(&#8220;FUERZA: &#8220;+fuerza);<br />
System.out.println(&#8220;INTELIGENCIA: &#8220;+inteligencia);<br />
System.out.println(&#8220;ASTUCIA: &#8220;+astucia);<br />
System.out.println(&#8220;HABILIDAD: &#8220;+habilidad);<br />
System.out.println(&#8220;PUNTERIA: &#8220;+punteria);<br />
System.out.println(&#8220;El numero de guerreros creado es: &#8220;+numGuerreros);</p>
<p>}<em>//CIERRE IMPRIMIR</em></p>
<p>}<em>//CIERRE GUERRERO</em></p>
<p><em><strong>//INTERFACE HECHICERO</strong></em></p>
<p>interface Hehicero{</p>
<p>public int doblarMagia();<br />
public int doblarPoderDeLuz();<br />
}</p>
<p><strong><em>//CLASE MAGA</em></strong></p>
<p>class Maga extends Personaje implements Hechicero{<br />
int magia:<br />
int poderDeLuz;<br />
int numMagas;<br />
Personaje maga;<br />
Object o;</p>
<p>Maga(int vigorIncial, Object o){//Este objeto sera la referencia ak objeto que lo creo<br />
super(int vigorInicial);<br />
this.o=o;<br />
magia=450;<br />
poderDeLuz=300;<br />
numMagas++;<br />
}<br />
<em>//METODOS PON Y DAME</em></p>
<p>public void ponMagia(int magia){<br />
this.magia=magia;<br />
o.personajeCambiado(maga);//Como ha habido un cambio llamamos a personajeCambiado()<br />
}<br />
public void ponPoderDeLuz(int poderDeLuz){<br />
this.poderDeLuz=poderDeLuz;<br />
o.personajeCambiado(maga);//Como ha habido un cambio llamamos a personajeCambiado()<br />
}<br />
public int dameMagia(){<br />
return magia;<br />
}<br />
public int damePoderDeLuz(){<br />
return poderDeLuz();<br />
}<br />
//Metodos que doblan el valor de magio y poderDeLuz</p>
<p>public int doblarMagia(){<br />
magia=magia*2;<br />
return magia;<br />
}<br />
public int doblarPoderDeLuz(){<br />
poderDeLuz=poderDeLuz*2;<br />
return poderDeLuz;<br />
}<br />
public void imprimir(){<br />
System.out.println(&#8220;Las cualidades de la maga son:&#8221;);<br />
System.out.println(&#8220;VIDA =&#8221;+vida);<br />
System.out.println(&#8220;FUERZA&#8221;+fuerza);<br />
System.out.println(&#8220;INTELIGENCIA&#8221;+inteligencia);<br />
System.out.println(&#8220;ASTUCIA&#8221;+astucia);<br />
System.out.println(&#8220;MAGIA&#8221;+magia);<br />
System.out.println(&#8220;PODER DE LUZ&#8221;+poderDeLuz);<br />
}<br />
}</p>
<p><em><strong>//CLASE PRUEBA</strong></em></p>
<p>class Prueba{<br />
public static int vigorInicial=300;<br />
public static String maga;<br />
public static String guerrero;<br />
public static String hechicero;<br />
Prueba p = new Prueba();<br />
public void personajeCambiado(Personaje p){<br />
p.imprimir();<br />
}<br />
public static void crearPersonaje(String s){<br />
if(s.equals(maga)){<br />
Maga m = new Maga(vigorInicial, p);<br />
}else if(s.equals(guerrero)){<br />
Guerrero g = new Guerrero(vigorInicial, p);<br />
}<br />
}<br />
public static void main(String args[]){</p>
<p>crearPersonaje(maga);</p>
<p>}<br />
}</p>
<p><strong><em>Conocimientos empleados:</em></strong></p>
<p>En el ejercicio hemos podido practicar los siguientes conceptos:</p>
<p>-Herencia.<br />
-Paso de variables como argumentos de métodos.<br />
-Impementación de interfaces.<br />
-Clases y métodos abstractos.<br />
-Variables static.<br />
-Uso e implementación del constructor.<br />
-Métodos pon y dame.</p>
<p style="margin-bottom:0;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/23/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/23/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=23&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/07/29/ejercicio-1-de-verano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 12</title>
		<link>http://julitros2008.wordpress.com/2008/06/13/practica-12/</link>
		<comments>http://julitros2008.wordpress.com/2008/06/13/practica-12/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 14:50:02 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=15</guid>
		<description><![CDATA[Comenzamos con JMF&#8230;
Introduccion
Este ejercicio sirve de introducción en el mundo de JMF mediante la lectura de su API
1)El paquete javax.media será el que englobe todas las funciones propias de esta API
El javax.media.control será el que implemente las funciones meramente de control.
El javax.media.format nos permitirá realizar acciones con el formato de video, haciando modificaciones y demás
Y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=15&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Comenzamos con JMF&#8230;</p>
<p><strong>Introduccion</strong></p>
<p>Este ejercicio sirve de introducción en el mundo de JMF mediante la lectura de su API</p>
<p>1)El paquete javax.media será el que englobe todas las funciones propias de esta API</p>
<p>El javax.media.control será el que implemente las funciones meramente de control.</p>
<p>El javax.media.format nos permitirá realizar acciones con el formato de video, haciando modificaciones y demás</p>
<p>Y el ultimo paquete, el javax.meda.util parece ser que nos permite hacer una captura de fotogramas para quedarnos con imágenes y viceversa</p>
<p>Después de esta introducción se nos informa de como debemos de instalar una serie de paquetes que no son propios de java y que necesitamos para el correcto funcionamiento de las clases de JMF</p>
<p><strong>Ejercicio 1</strong></p>
<p>Nos piden que desarrollemos un reproductor de video sin mucha más información. Nos hemos ayudado para ello de algo de información que hemos buscado en internet y de las explicaciones que se nos han dado en clase.</p>
<p>En realidad el reproductor no es más que hacer un JFrame con un ContentPane y dentro de este añadirle, dos componentes, uno de control, que será donde tengamos las funciones de play, stop, etc, y otro de visualización, que será el reproductor propiamente dicho.</p>
<p>En principio esto no parece que tenga mayr complicación pero debemos tener en cuenta que, en realidad, nos va a tocar tratar una serie de eventos y es aquí donde radica la mayor complicación.</p>
<p>Hemos realizado un objeto de la interfaz player, aydandonos de la clase manager(ya que no se puede hacer un new directamente de una interfaz) y usando el método createPlayer() y este objeto el que debemos de tratar ya que según se implementa se encuentrá en un estado <em>Unrealized, </em>en éste estado el player no está capacitado para reproducir.</p>
<p>La mayoría de los métodos que pueden ser llamados en un player requieren que éste esté en el estado <em>Realized</em><br />
Para saber en que momento se encuentra en disposición de reproducir el flujo multimedia utilizamos los ya mencionados eventos.</p>
<p>Además, hay que tener en cuenta que los eventos que se generan en el proceso de la reproducción de un flujo multimedia son de tipo asíncrono, es decir, podrán producirse en cualquier momento, por lo que habrá que reflejarlo en la implementación de método que los trate.</p>
<p>Para atender estos eventos deberemos seguir los siguiente pasos;</p>
<p>1) Implementar la interfaz <em>ControllerListener </em>en la clase que genera los eventos, y dentro de está clase deberemos desarrollar el método <em>ControllerUpdate().</em></p>
<p>2)Registrar cada una de las instancias de la clase para notificar los eventos de la reproducción. Para ello, llamaremos al método del Player <em>addControllerListener() .</em></p>
<p>De esta forma, cada vez que se genera un evento se llamará al método <em>controllerUpdate() </em>que será el encargado de tratarlos.</p>
<p>La implementación de este método consiste en una serie de if-else que proporcionan la solución a cada evento.</p>
<p>El esqueleto de esta clase será el siguiente:</p>
<p>public synchronized void controllerUpdate(ControllerEvent event){</p>
<p>if(event instanceof TipoEvento){&#8230;..}</p>
<p>else if (event instanceof OtroTIpoEvento){&#8230;..}</p>
<p>}</p>
<p>&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=15&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/06/13/practica-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
		<item>
		<title>Videojuego</title>
		<link>http://julitros2008.wordpress.com/2008/06/05/videojuego/</link>
		<comments>http://julitros2008.wordpress.com/2008/06/05/videojuego/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 08:43:13 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=17</guid>
		<description><![CDATA[Nos dijeron en clase que habia que colgar una reseña del videojuego en el Blog. Ahí va!
El juego está implementado por mí (Julio Martín) y un compañero del grupo 66 (Claudio Barroso).
 

 Las bolas caen desde la parte superior de la pantalla como en el clásico juego del tetris;  la principal diferencia es que, en lugar de tener [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=17&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:left;"><a href="http://julitros2008.files.wordpress.com/2008/06/dibujo11.jpg"></a>Nos dijeron en clase que habia que colgar una reseña del videojuego en el Blog. Ahí va!</p>
<p>El juego está implementado por mí (Julio Martín) y un compañero del grupo 66 (Claudio Barroso).</p>
<p> </p>
<p style="text-align:center;"><a href="http://julitros2008.files.wordpress.com/2008/06/dibujo.jpg"><img class="alignnone size-medium wp-image-21" src="http://julitros2008.files.wordpress.com/2008/06/dibujo.jpg?w=256&#038;h=300" alt="" width="256" height="300" /></a></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;"> </span></strong><span style="font-size:8pt;font-family:Verdana;">Las bolas caen desde la parte superior de la pantalla como en el clásico juego del tetris; <span> </span>la principal diferencia es que, en lugar de tener bloques, tenemos bolas de colores que hay que combinar entre sí<span>  </span>para conseguir sumar puntos y que se eliminen del tablero. Las combinaciones tienen que ser del mismo color y al<span>  </span>menos de tres bolas. Al igual que en el tetris, si las bolas llegan al inicio del tablero, el juego se termina<span>  </span>y te muestra la puntuación final.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;">Diagrama genérico:</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Para implementar el juego, hemos desarrollado las siguientes 8 clases:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Una clase Bitrix, que hereda de JFrame, y se corresponderá con la ventana del Juego. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"><span> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Cuatro clases que heredan de JPanel, que se combinarán entre sí y se añadiran al JFrame.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Una clase casilla que hereda de JLabel.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Una clase Bola.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Una clase Aplicación.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"><a href="http://julitros2008.files.wordpress.com/2008/06/dibujo1.jpg"></a> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;"> </span></strong><strong><span style="font-size:8pt;font-family:Verdana;">Diagrama según su relación.</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:8pt;font-family:Verdana;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Bola: </span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">-Atributos</span></span><span style="font-size:8pt;font-family:Verdana;">: posición ‘x’ e ‘y’ en el tablero y un entero referente al color que toma. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Al crearse una bola se le asigna un color aleatorio. Tiene los métodos avanzar, derecha e izquierda que modificarán su posición.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Casilla: </span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Contendrá una imagen de la bola, o una imagen vacia.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Tablero.</span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">-Atributos</span></span><span style="font-size:8pt;font-family:Verdana;">: Un objeto de la clase bola, un array de casillas (JLabel), un entero con la puntuación, un boolean finJuego <span> </span>que se pondrá a true cuando se termine el juego. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Gestiona la posición y movimientos de la bola, la eliminación y caída de las bolas, la suma de puntuación..<span>           </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"><span>            </span></span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase PanelJuego</span></em><span style="font-size:8pt;font-family:Verdana;">.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">-Atributos</span></span><span style="font-size:8pt;font-family:Verdana;">: Contiene el panel tablero, un panel que recoge la puntuación, un panel de fin de juego, y un botón volver al menú.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Implementa las interfaces keyListener, para mover la bola desde el teclado, y el actionListener, para los eventos del timer.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase PanelMenu.</span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">-Atributos</span></span><span style="font-size:8pt;font-family:Verdana;">:Contiene dos botones, el de Jugar y el de salir. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Estos botones estan controlados por la clase Bitrix.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Multimedia.</span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">Atributos:</span></span><span style="font-size:8pt;font-family:Verdana;">Contiene dos player, correspondientes a la canción del menú y la del Juego. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Los componentes de control y los visuales no están implementados por estética.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Bitrix</span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:8pt;font-family:Verdana;">Atributos</span></span><span style="font-size:8pt;font-family:Verdana;">: Tres objetos, de PanelJuego, PanelMenu, y Multimedia.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">-Implementa los botones que tiene el juego y gestiona el paso de un panel a otro, la reproducción de las canciones,..</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="font-size:8pt;font-family:Verdana;">Clase Aplicación</span></em></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;">Es la clase que contiene el método main y ejecuta la aplicación propiamente dicha.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:8pt;font-family:Verdana;"> </span></p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=17&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/06/05/videojuego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>

		<media:content url="http://julitros2008.files.wordpress.com/2008/06/dibujo.jpg?w=256" medium="image" />
	</item>
		<item>
		<title>Práctica 11</title>
		<link>http://julitros2008.wordpress.com/2008/06/05/practica-11/</link>
		<comments>http://julitros2008.wordpress.com/2008/06/05/practica-11/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 08:27:43 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=16</guid>
		<description><![CDATA[Hola de nuevo.
Ejercicio 1: Eventos en SWING
Vamos a comentar los apartados donde hemos visto un grado mayor de dificultad.
Comenzamos por el apartado 3, donde te preguntan por hilos (no los entiendo demasiado bien, asique si hay algún error, me gustaría que lo comentaseis)
El método implementado para cambiar color es éste:
bf= new BufferedReader (new InputStreamReader(System.in));
try{
String lineaTeclado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=16&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hola de nuevo.</p>
<h3>Ejercicio 1: Eventos en SWING</h3>
<p>Vamos a comentar los apartados donde hemos visto un grado mayor de dificultad.</p>
<p>Comenzamos por el apartado 3, donde te preguntan por hilos (no los entiendo demasiado bien, asique si hay algún error, me gustaría que lo comentaseis)</p>
<p>El método implementado para cambiar color es éste:</p>
<p><span style="color:#0000ff;">bf= new BufferedReader (new InputStreamReader(System.in));<br />
try{<br />
String lineaTeclado = bf.readLine();<br />
System.out.println(t.getName());<br />
if(lineaTeclado.equals(&#8220;&#8221;)){<br />
label.setBackground(new Color(0,100,0));<br />
} }</span></p>
<p>donde t es un objeto de la clase Thread().</p>
<p>El hilo que esta haciendo esta ejecución es el 0. (la salida por pantalla nos indica: Thread-0).</p>
<p>Pasamos al ejercicio 5.</p>
<p>Esta clase la he implementado con una HashTable; como asociamos una clave(NIA) al objeto (nombre), podemos obtener el objeto a partir de esta clave.</p>
<p>Hemos utilizado un casting para convertir en String el objeto Object que te devuelve el método get de la clase Hashtable; aunque hubiera sido más correcto implementar el método toString().</p>
<p>Para simular la espera de 10 segundos , simplemente hay que invocar al método sleep(int) sobre el objeto de la clase Thread pasándole como argumento el tiempo en milisegundos.</p>
<p>Ejercicio 6</p>
<p>Lo que nos ha parecido mas complicado de este apartado, es hacer que el usuario no pueda lanzar nuevas búsquedas cuando hay una en curso. Lo que hacemos es quitarle el actionListener que agrego al botón (removeActionListener()) mientras que se está ejecutando la búsqueda. Seguro que hay formas mejores de implementarlo..</p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=16&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/06/05/practica-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
		<item>
		<title>Pratica 10</title>
		<link>http://julitros2008.wordpress.com/2008/05/20/pratica-10/</link>
		<comments>http://julitros2008.wordpress.com/2008/05/20/pratica-10/#comments</comments>
		<pubDate>Tue, 20 May 2008 08:31:51 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=14</guid>
		<description><![CDATA[Bueno. seguimos con el swing&#8230;
Ejercicio 1
El primer ejercicio simplemente nos sirve para introducirnos en los procesos. Sólamente hemos tenido que ir copiando, pegando y ejecutanto tres clases.
La primera de ellas, llamada Ding, se encarga de lanzar un proceso que imprime Ding! por pantalla cada vez que pulsamos la tecla enter.  Vemos que la  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=14&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bueno. seguimos con el swing&#8230;</p>
<p><strong>Ejercicio 1</strong></p>
<p>El primer ejercicio simplemente nos sirve para introducirnos en los procesos. Sólamente hemos tenido que ir copiando, pegando y ejecutanto tres clases.</p>
<p>La primera de ellas, llamada Ding, se encarga de lanzar un proceso que imprime Ding! por pantalla cada vez que pulsamos la tecla enter.  Vemos que la  complejidad de la clase es bastante baja y no tiene más.</p>
<p>La segunda clase se encarga de lanzar un proceso cada segundo que consiste en imprimir por pantalla el texto Dong!.</p>
<p>En este proceso se usa algo nuevo (Thread.sleep(1000);)que es quien se encarga de contar el tiempo.</p>
<p>Finalmente ejecutamos un texto que lo pretende es lanzar dos procesos a la vez pero éste ya no funciona correctamente ya que no puedes mandar al ordenador que ejecute más de un proceso al tiempo, para poder conseguir esto será necesarío llevarlos por diferentes vías.</p>
<p><strong>Ejercicio 2</strong></p>
<p>En este ejercicio comenzamos a ver como podemos lanzar dos procesos juntos mediante la creación de diferente hilos.</p>
<p>La mecánica de este ejercicio es la misma que la primera, iremos copiando y compilando.</p>
<p>En primer lugar, creamos una clase llamada TwoThreads que nos imprimirá por pantalla el nombre de los hilos creados en ésta. Al compilalarla vemos que funciona correctamente y nos imprime por pantalla;</p>
<p>main</p>
<p>Thread-0</p>
<p>La clase thread esta relacionada con la clase runable y cuando imvocamos a start(thread) se ejecuta automaticamente lo que haya en el método run() que pretenece a runnable. En dicho método, escribimos el código que se encargará de hacer lo que nosotros queramos, en este caso imprimir el nombre del hilo.</p>
<p>Podemos ver algo que en principio nos podrá chocar, y es la creación de un objeto de runnable, que es un interfaz, ya que en principio esto no se puede hacer, pero en realidad, lo que estamos haciendo es una clase interna, invocando dentro de esta el método run() característico de runnable.</p>
<p>En el segundo texto vemos una manera diferente de hacer la misma cosa.</p>
<p>La diferencia principal es que la clase principal implementa a runnable, por lo que ya no tenemos ninguna cosa &#8220;rara&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Run está dentro del cuerpo de la clase principal y en el main es donde se crea un objeto de la clase TwoThreadsSimple pero con las caracteristicas de runnable.</p>
<p>En último lugar tenemos el tercer texto en el que volvemos a conseguir el mismo resultado, pero la caraterística principal de este programa es que la clase hereda de Thread por lo que al hacer el objeto en el main de la clase TwoThreadsSimple, éste tendra todas las características de runnable ya que pertenece a Thread y hemos heredado de Thread.</p>
<p><strong>Ejercicio 3</strong></p>
<p>En este código se crean dos hilos, write0 y write1 y se llama al método start que está definido en runnable.</p>
<p>En principio lo que se podría esperar de este código viendolo a primera vista  es que te imprima 10.000 ceros seguidos de 10.000 unos pero no ocurre así debido al funcionamiento en si de los hilos.</p>
<p>Lo que queremos con los hilos es ejecutar varios procesos a la vez, para ello se les adjudica un tiempo del total para cada hilo pero este tiempo no lo va a emplear seguido, es decir, si tiene 20ms no los agotará al instante, lo que hace es ir alternando los hilos a la hora de su ejecución.</p>
<p><img src="/Documents%20and%20Settings/pepe/Escritorio/hilos.JPG" alt="" /></p>
<p>En definitiva, el tiempo de ejecución de los procesos nos es desconocido pero es precisamente eso lo que nos interesa ya que nos debe dar la sensación de que éstos se ejecutan paralelamente aunque no sea así.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=14&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/05/20/pratica-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>

		<media:content url="/Documents%20and%20Settings/pepe/Escritorio/hilos.JPG" medium="image" />
	</item>
		<item>
		<title>Práctica 9</title>
		<link>http://julitros2008.wordpress.com/2008/05/07/practica-9/</link>
		<comments>http://julitros2008.wordpress.com/2008/05/07/practica-9/#comments</comments>
		<pubDate>Wed, 07 May 2008 19:00:08 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=13</guid>
		<description><![CDATA[LLegó el Swing..
De momento parece que empieza fácil; muchos ejercicios, pero cortos para ir entendiendo poco a poco el funcionamiento..
Ejercicio 1
El funcionamiento de este programa se puede resumir en una serie de pasos:
-Se crea un objeto frame de la clase JFrame,
un contenedor de alto nivel (una ventana),
que va a contener a otros contenedores,
-Se invoca al [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=13&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>LLegó el Swing..</p>
<p>De momento parece que empieza fácil; muchos ejercicios, pero cortos para ir entendiendo poco a poco el funcionamiento..</p>
<p><strong>Ejercicio 1</strong><br />
El funcionamiento de este programa se puede resumir en una serie de pasos:</p>
<p>-Se crea un objeto frame de la clase JFrame,<br />
un contenedor de alto nivel (una ventana),<br />
que va a contener a otros contenedores,</p>
<p>-Se invoca al método setDefaultCloseOperation, exclusivo de la clase JFrame,<br />
pasándole como parámetro un objeto de la clase Operation definido en Jframe.<br />
En este caso hablamos de JFrame.EXIT_ON_CLOSE, para permitir cerrar la aplicación usando el<br />
método system exit (está indicado en el API)<br />
-Se crean dos objetos, un contentPane de la clase JPanel, el panel por defecto que contiene el JFrame, y un label de la clase JLabel, una etiqueta de texto que se le añade al contentPane mediante el método add().</p>
<p>-Cuando el JFrame contiene todos los elementos añadidos, se suele invocar al método setSize() ,para definir el tamaño del frame y setVisible(), para que se haga visible el frame. Estos dos últimos métodos estan definidos en la clase Component, de la que heredan JFrame, JPanel y JLabel.</p>
<p>Para hacer mas grande la ventana (<tt>HelloWorldGUIBig</tt> ) basta con modificar los parámetros que se le pasan al setSize().</p>
<p>Para cambiar el color de fondo de contentPane se puede invocar al método setBackground() de la clase component, pasándole como parámetro un objeto de la clase color. Si quieres que sea azul: contentPane.setBackground(new Color(0,0,255));</p>
<p>Al añadir el codigo adicional, el programa tarda en ejecutarse mas tiempo. Lo que hicimos fué modificar el parámetro del thread.sleep, y observamos que &#8220;esperaba&#8221; mas a ejecutarse si aumentabamos la cifra, y al revés si la disminuimos.</p>
<p>El programa efectivamente sigue ejecutandose a pesar de que se acabe el método main(); esto es debido a que  interactua con el usuario, y está esperando a que éste le de una orden (en este caso, solo puede cerrar la ventana) para seguir ejecutandose. Si comentamos setVisible y setSize, no hay ningún modo de interactuar con el usuario; entonces si que termina de ejecutarse.</p>
<p>Al añadir System.exit(0), el método main ya se encarga de cerrar la ventana, entonces se observa como se abre y se cierra la aplicación inmediatamente, sin dejar tiempo para que el usuario interactue con ésta.</p>
<p><strong>Ejercicio 2</strong></p>
<p>Tras repasar el manejo de ventanas y los diferentes metodos en el API comentamos los ejercicios.</p>
<p>Para ignorar el cierre tan solo hay que pasarle como argumento <code>DO_NOTHING_ON_CLOSE</code> al método setDefaultCloseOperation.</p>
<p>Si quieres que utilize el look and feel por defecto <code>hay que invocar al método setDefaultLookAndFeelDecorated(true).</code></p>
<p>Para que no utilize decoración por defecto de ventana, hay que implementar <tt>setUndecorated(true).</tt></p>
<p><strong>Postearemos los demás ejercicios en breve!</strong></p>
<p><strong>Ejercicio 3</strong></p>
<p>1) En primer lugar nos mandan hacer una variacion del programa HellowGuiColor cambiandole el color de las letras y del fondo.</p>
<p>Para cambiar el fondo de la etiqueta ultilzamos la siguiente linea de código:</p>
<p>label.setBackground(Color.BLACK);</p>
<p>Y para cambiar la letras:</p>
<p>label.setForeground(Color.WHITE);</p>
<p>En cuanto al tamaño de la venana vemos que para poder  ponerla maximizada efectivamente hay que comprobar que  el entorno gráfico soporta esta posibilidad. Parsa ellos usamos simplemente un if-else con el método isFrameStateSupported() pasándole como argumento Frame.MAXIMIZED_BOTH.</p>
<p>2) En este segundo apartado nos manadan que modifiquemos el programa colocandole cuatro etiquetas de diferente color y diferente texto posicionadas en los diferentess puntos cardinales.</p>
<p>Este apartado tiene la característica principal de como se colocan las etiquetas. Para distribuirlas lo único que usamos es la siguiente linea de código que se la pasamos como argumento al método add()</p>
<p>3) Podemos observar que los textos de las etiquetas vienen centrados, por defecto, a la izquierda y en la parte superior de la etiqueta. A continuación vemos como cambiar esto.</p>
<p>4) En este apartado nos piden modificar el programa anterior para centrar los textos de la etiqueta. Lo único que tenemos que hacer para esto será aplicar el método setHorizontalAlignment(JLabel.CENTER); sobre el objeto label pasandole como argumento la posición en la que queremos que la ponga, en este caso el centro y para la alineación vertical usaremos el método setVerticalAlignment(JLabel.CENTER);</p>
<p>5) En este apartado ya metemos una imagen dentro del contenedor. Para ello, en primer lugar, creamos un objeto de la clase ImageIcon y le pasamos el path de la imagen en cuestión. Después, este obejto se lo pasamos a otro objeto de la clase JLabel y definimos su color posición como hicimos anteriormente.</p>
<p>6) Para la realización de este apartado simplemente habrá que llamar al método pack(); sobre el objeto frame  vemos que efectivamente nos reduce la ventana al mínimo necesario para que se vea correctamente.</p>
<p>7) En primer lugar, creamos unas variable de tipo int para  almacenar las dimensiones de la pantalla y del frame, que las conseguimos mediante los métodos getWidth(); y getHeight(); aplicados sobre un objeto de la clase Dimension.</p>
<p>Finalmente usamos la clase setLocation sobre frame y le pasamos el punto donde queremos ponerlo que estará formado por las variable que hemos conseguido antes divididas entre dos.( Este paso no lo entiendo muy bien asique preguntare por algún blog a ver si alguien se lo ha planteado).</p>
<p><strong>Ejercicio 4</strong></p>
<p>Bueno, en principio no teníamos problemas con este ejercicio, creimos saber hacerlo pero en el momento de darle a compilar no funcionaba del todo correctamente. El único problema que nos da es que las letras que tienen que poner en negro las pinta del mismo color que las otras, es decir, blancas, y no sabemos porque pasa esto asique si a alguien le apetece leerse el trocillo de código y encuentra el típico fallo chorra que no alcanzas a ver que lo comente&#8230;</p>
<p>frame.setLayout(new GridLayout(20,1));<br />
for(int i=0; i&lt;20; i++){<br />
label = new JLabel(&#8220;label &#8220;+i);<br />
label.setOpaque(true);<br />
if(i%2==0){<br />
label.setForeground(Color.BLACK);<br />
label.setBackground(Color.WHITER);</p>
<p>}else label.setBackground(Color.BLACK); label.setForeground(Color.WHITE);<br />
contentPane.add(label, BorderLayout.CENTER);</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=13&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/05/07/practica-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
		<item>
		<title>Practica 8</title>
		<link>http://julitros2008.wordpress.com/2008/04/25/practica-8/</link>
		<comments>http://julitros2008.wordpress.com/2008/04/25/practica-8/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 08:28:00 +0000</pubDate>
		<dc:creator>julitros2008</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://julitros2008.wordpress.com/?p=12</guid>
		<description><![CDATA[Antes de nada, decir que se ha incorporado Manu del blog &#8220;Manuelen5&#8243; y a partir de ahora haremos todas las prácticas juntos en este Blog.
Para no perder el hilo de las clases , hemos decidido empezar a comentar la práctica 8 y en los próximos días continuaremos con las que han quedado atrás.
Esta es la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=12&subd=julitros2008&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Antes de nada, decir que se ha incorporado Manu del blog &#8220;Manuelen5&#8243; y a partir de ahora haremos todas las prácticas juntos en este Blog.</p>
<p>Para no perder el hilo de las clases , hemos decidido empezar a comentar la práctica 8 y en los próximos días continuaremos con las que han quedado atrás.</p>
<p>Esta es la última práctica referente a algoritmia de la asignatura, antes de empezar con la chicha!!!</p>
<p><strong>Ejercicio 1</strong></p>
<p>En primer lugar, nos piden implementar una tabla Hash con trucos de un supuesto juego.</p>
<p>Tan solo hay que instanciar un objeto de la clase HashTable (previamente importada), y utilizar el método put para insertar elementos en la tabla con su respectiva clave, y el método get que nos devueve dicho elemento a partir de la clave.</p>
<p>Esta tabla es de gran utilidad ya que accedes fácilmente a los elementos de ésta, además aporta privacidad a los datos ya que solo puedes acceder a ellos a través de la clave asociada. Podríamos usar cualquier otra estructura de datos para almacenar elementos(pila, cola, array..) pero tendríamos que implementar el código para acceder a un elemento mediante una clave.</p>
<p><strong>Ejercicio 2</strong></p>
<ol>
<li>Factorial. Analiza el código y estudia su funcionamiento recursivo.</li>
</ol>
<p>Este método utiliza la recursividad para obtener el factorial de un número.  Simplemente se &#8221;llama a si mismo&#8221; basandose en que el factorial de un número es la multiplicación de ese número por el factorial de ese número una unidad menor.</p>
<p>La condición de parada, se da cuando el número vale 1, y te devuelve un 1.</p>
<p>¿qué hace el método<span class="src"> p1(&#8230;)</span>?</p>
<p>Imprime el número que le pases como parámetro y vuelve a llamar a ese mismo método con este número una unidada menor, hasta que llega a 0, que imprime &#8220;Fin&#8221; y deja de ejecutarse el método.</p>
<p>¿qué muestra el método <span class="src">p2(..)</span>?</p>
<p>Le pasas como parámetro un entero &#8220;a&#8221; y un entero &#8220;b&#8221;. Lo que hace es sumarle el valor de &#8220;a&#8221; a &#8220;b&#8221; y le resta una unidad a &#8220;a&#8221;. Con estos nuevos valores vuelve a ejecutar el método. La condición de parada se da cuando &#8220;a&#8221; vale 0, e imprime por pantalla el valor de b.</p>
<p>Suma de elementos de un array. Analiza el código del método suma(&#8230;) y estudia su funcionamiento recursivo.</p>
<p>Este método te devuelve el valor de el array en la posición elegida, y te lo suma a los sucesivos valores que tiene el array en posiciones superiores, hasta llegar al último valor. </p>
<p>Fibonacci. Analiza el código del método fibonacci(&#8230;) y estudia su funcionamiento recursivo.</p>
<p>Como los anteriores, utiliza la recursividad para implementar la serie de fibonacci. El método deja de ejecutarse cuando el número que le pasas como parámetro es 1 o 2, en ese caso te devuelve un 1. </p>
<p>Inverso de un número. Analiza el código del método inverso(&#8230;) y estudia su funcionamiento recursivo.</p>
<p>Este método te saca por pantalla las unidades, decenas, centenas.. del número que le pases. Se basa en la operación del resto &#8220;%&#8221; y utiliza el método recursivo para ir dividiendo el número entre 10 y sacar por pantalla el resto, y así sucesivamente, hasta que el número es menor que 10, que te imprime el número tal cual, y se termina la aplicación.</p>
<p>Si este método se me hubiera ocurrido en el examen de septiembre, ahora no estaría escribiendo esto&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/julitros2008.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/julitros2008.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/julitros2008.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/julitros2008.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/julitros2008.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/julitros2008.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/julitros2008.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/julitros2008.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/julitros2008.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/julitros2008.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/julitros2008.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/julitros2008.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=julitros2008.wordpress.com&blog=2987299&post=12&subd=julitros2008&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://julitros2008.wordpress.com/2008/04/25/practica-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c2d507972a00551792b062607476ddbb?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Manu&#38;Julio</media:title>
		</media:content>
	</item>
	</channel>
</rss>