miércoles, 11 de julio de 2012

Bitácora 6

Estos días hemos estado teniendo retroalimentación del método lean, ya que con éste tendríamos que finalizar bien nuestra metodología.

Después de terminar la versión beta nos quedan dos principios de lean construir la integridad y ver la totalidad. En esta bitácora vamos explicar como y donde se usaron estos principios.


Construir la integridad:


Cuando se usó el principio tenemos que ver si nuestro programa es lo suficientemente atractivo para el usuario.


La interfaz gráfica es muy accesible e intuitiva para el usuario, éste puede manejar el programa sin tener que haberlo usado anteriormente, además de ser amigable a la vista.

Desde el principio se trato de crear una interfaz que no fuera tediosa a la vista de la gente, y no se aburriera con el hecho de verla, también el juego es eficiente y responde muy bien hacia la percepción del usuario.


Ver totalidad:
Se uso para ver los limites del proyecto para no hacerlo a la larga más complicado y poder hacerlo todo junto, se trato de no dividir por que no se podrían adaptar bien a la hora de juntarles.



Y ahora mostramos la tabla, que nosotros fuimos usando para el seguimiento del proyecto mientras duro su creación.



sprint Alpha Beta  
Eliminate waste x x x  
Amplify Learning x x x  
Decide as late as posible   x x  
Deliver as Fast as Possible     x  
build integrity in     x  
See the whole     x  



Martes 10 de julio 

El equipo tenía casi todo el trabajo realizado solo faltó hacer una prueba general de todo el sistema y ver de que podríamos deshacernos o en dado caso que podríamos agregar para mejorar. Así que todo este día fue usado para las pruebas totales del sistema.

Carlos Santiago

Terminar los últimos detalles de algunos errores que salieron, como en uno de nuestros limites del botón pasear, éstos nos dejaban entrar por unos lugares que no se podían entrar, Ya fueron modificados.

51Min.

Benjamin Valdez 
Superviso el seguimiento del método en las ultimas etapas sobre en donde podríamos realizar éstos.
40 Min.
Ricardo Lopez 
Realizo una prueba del software para ver si era agradable al momento de jugarlo como un usuario.
20 Min.


El porcentaje de avance del proyecto es de 100% así como sus respectivas versiones alpha y beta que fueron concluidas satisfactoriamente.

Para finalizar nuestro proyecto con excito, nuestro equipo se baso en el libro de  Lean Software Development: An Agile Toolkit, éste nos ayudo mucho al principio y al final del proyecto.


https://dl-web.dropbox.com/get/proyectoadmon/Poppendieck%20M.%2C%20Poppendieck%20T.%2C%20Schwaber%20K.%20-%20Lean%20Software%20Development.%20An%20Agile%20Toolkit%20%28The%20Agile%20Software%20Development%20Series%29%282003%29%28203%29.pdf?w=13f7310e









lunes, 9 de julio de 2012

Bitácora 5

Usando la propiedad de entregar tan rápido como sea posible fue como planteamos esta bitácora.
Nuestras expectativas para la versión beta fueron realizar unas mejoras a la versión alpha, ésta tenia unos detalles para mejorar la interacción del usuario con su mascota.

Viernes 06 de Julio

Además de la realización de la bitácora anterior se realizaron unas cuantas cosas más.

Carlos Santiago 

Estuvo realizando los dibujos de los 'sprites' del nuevo nivel del tamagochi, modificando el código que hiciera el cambio de 'sprites' cuando subiera de nivel o evolucionara. 2:35 Horas

Benjamin Valdez
Organizando las próximas etapas y la canalización del proyecto basándose en lean con lo buscado anteriormente. 1:08 Horas

Sábado 07 de Julio


Benjamin Valdez

Investigó sobre como poner fondos en el dibujo. 45 Min

Carlos Santiago 

Comenzar con el timer para que nuestro personaje tuviera otras mascotas a su alrededor. 30 Min

Ricardo Lopez 

Investigación sobre un documento donde se podría basar 30 Min

Se tubo una platica por el equipo de la modificación del botón pasear donde se expusieron las diferentes ideas que se tenia sobre éste, la idea inicial fue crear una pantalla con un fondo donde otras criaturas estuvieran y se pudiera caminar. La segunda idea y la que se realizo fue poner una red de obstáculos para nuestra mascota, ésta tendría que pasar esquivando los objetos a los que se aproximaría y al final del camino habría un obstáculo de un color diferente a los demás, justo al momento de pasar el penúltimo obstáculo, toda nuestra pantalla se volvería del color del ultimo obstáculo y si el usuario no observo bien donde se encontraba la salida de este no podría ganar el juego.

En la ultima actividad de equipo se tardo un tiempo estimado de 2:15 Horas

Carlos Santiago

Programó los cambios en el botón de pasear. 2:55 Horas

Tabla de tiempo invertido

Administracion diseño programacion pruebas
Viernes 06 01:08 02:35 0 0
Sabado 06 02:55 40 01:50 15


pruebas de lo realizado durante estos días.


La pantalla principal cuando el tamagochi tubo su crecimiento.



Las imágenes que vienen continuación muestran algunos de nuestros sprites del tamagochi adulto.
En las siguientes imágenes se muestran nuestros 'sprites' de comer.

 la siguiente imagen es el standby de nuestro 'sprite'
 El 'sprite' del tamagochi durmiendo.
 Para subir de nivel se pensó en hacer un condicional donde se los contadores de comida y felicidad total sean igual a 10 nuestra mascota sera nivel 2.

El otro cambio fue el  botón de sacar a pasear a la mascota, donde ésta pasara los obstáculos.


Al momento de tomar con alguna barra pierdes y volverás desde donde empezaste.


y al llegar a la parte final todo se volverá gris

el código de uno de los botones que se uso para detectar los limites.



case KeyEvent.VK_RIGHT:
  papel.setColor(Color.white);
  papel.fillRect(0,0,1000,300);
  x = x + pasoX;
  papel.setColor(Color.blue);
  papel.drawOval(x, y, 20, 20);
  papel.setColor(Color.BLACK);
  papel.fillRect(60,80 ,100,40);
  papel.fillRect(60,170,100,40);
  papel.fillRect(220,40,40,200);
  papel.fillRect(358,0,40,125);
  papel.fillRect(358,155,40,150);
  papel.fillRect(470,0,40,275);
  papel.fillRect(570,30,40,270);
  papel.setColor(Color.gray);
  papel.fillRect(700,0,40,200);
  papel.fillRect(700,230,40,70);
  labelX.setText("X:"+x);
  
  if(x>=600){
   papel.setColor(Color.gray);
   papel.fillRect(0,0,1000,300);
  }
  
  if(x>=780){
   x=x-10;
  }
  if(x==40 && y>=70 && y<=110){
   JOptionPane.showMessageDialog(null,"Perdiste");
   x=30;
   y=40;
  }
  if(x==40 && y>=160 && y<=200){
   JOptionPane.showMessageDialog(null,"Perdiste");
   x=30;
   y=40;
  }
  if(x==200 && y>=30 && y<=230 ){
   JOptionPane.showMessageDialog(null,"Perdiste");
   x=30;
   y=40;
  }
  if(x==335 && y>=0 && y<=120 ){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x==335 && y>=140 && y<=300 ){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x==450 && y>=0 && y<=260){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x==550 && y>=20 && y<=300){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x==680 && y>=0 && y<=190){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x==680 && y>=220 && y<=300){
   x=30;
   y=40;
  JOptionPane.showMessageDialog(null,"Perdiste");
  }
  if(x>730){
   JOptionPane.showMessageDialog(null,"GANASTE!!!!");
   x=30;
   y=40;
  }
  break;

En términos generales podríamos decir que estamos en un 85% de la metodología, en cuanto a ésta no hemos tenido problema alguno y cuando tenemos alguna duda de que propiedad podríamos usar verificamos en los documentos que se encontraron al momento de la investigación.

En la siguiente tabla se puede ver cuales son las propiedades y en que etapas las hemos usado.

 
sprint Alpha Beta Market Release
Eliminate waste x x x
Amplify Learning x x x
Decide as late as posible x x
Deliver as Fast as Possible x
build integrity in
See the whole
--
Se puede ver que para realizar esta versión beta nosotros usamos una propiedad mas, entregar tan rápido como sea posible, también se utilizo decidir tan tarde como es posible las cosas como pudimos ver en la opción pasear a la mascota. 

jueves, 5 de julio de 2012

Bitácora 4

En esta entrada podemos decir que nuestra versión Alpha, esta concluida satisfactoriamente, así que publicaremos los avances que hicimos durante los últimos 2 días.

 Martes 03 de Julio 

 Se planeo para este día comenzar a aplicar los temas antes investigados, así como los botones faltantes éstos se dejaron pendientes siguiendo las herramientas "decidir lo más tarde posible".

 Carlos Santiago

Estuvo finalizando unos detalles simples del programa, unas pocas variables que faltaron de agregar y también modificando un poco la forma en la que se estaba utilizando el tamagochi. 30 minutos

Comenzó a ver la forma en la que se podría hacer la opción de juegos, después de meditarlo y pensar cual era la mejor forma en la que podría realizar esta parte. inicio con la programación del botón "paseo", se pensó en un principio en que fuera tipo scrolling pero para la versión alpha se quedo en forma plana.
1:45 Hora

Benjamin Valdez 

Investigar bien todo lo relacionado en la mejor manera en la que se podría guardar las variables de nuestra mascota virtual. Inicio las pruebas de las variables que deberían de ser guardadas, concluyo la primera parte del trabajo que era guardar las variables.  2:00 Horas


Ricardo López

Ricardo estuvo analizando las herramientas que aún hacían falta para terminar el proceso y cuales podrían ser usadas en un futuro. 1:00 Hora


Miércoles  04 de Julio


Carlos Santiago 
Comenzó a crear el 'mapa' para que la mascota pudiera caminar, al principio fue creado con botones así que se dio a la tarea de investigar como se utilizaban los KeyListener en java cambió los botones de la pantalla por que se pudiera jugar con el teclado (flechas hacia arriba, derecha, izquierda, abajo), se agrego un rectángulo al mapa para simular una cuadra en esta parte él agrego los limites para que nuestra mascota no pudiera atravesar la 'cuadra'. 2:15 Horas

Benjamin Valdez 
Termino la siguiente parte, que era la función cargar, aunque hubo algunas problemas para leer los archivos y que actualizara las variables, después de investigar documentación sobre el manejo de archivos, se pudo corregir el problema, en cambio la función guardar funciono perfectamente desde un principio.1:30 Horas


Ricardo López

Ricardo estuvo analizando los nuevos requerimientos para la versión beta a partir de los conocimientos adquiridos desarrollando la versión alpha, además se encargo de realizar la función para el botón "jugar" que consta de un piedra papel o tijera.   1:50 Hora


El equipo después de haber concluido con la versión alpha se encargo de ver cuales serían las mejoras, estás incluirán  3 niveles de crecimiento de la mascota y también el paseo no se configuro lo suficientemente grande para poder crear un mapa más grande donde el usuario podrá pasear cómodamente con su mascota.

pruebas de lo realizado durante éstos días.


El primer cambio que se puede visualizar es el Menú de cargar y guardar. Al momento de guardar o cargar los atributos que la criatura posee tales como comida, felicidad, comida, edad y peso de nuestra mascota. Éstos son guardados en un archivo de donde se podrían modificar y también cargar.


La edad aumentara según las comidas y la felicidad que halla obtenido nuestra mascota.

 El peso aumenta con las comidas ingeridas por nuestro pet.



la siguiente modificación se realizó en la creación del juego Piedra, Papel o Tijera



la imagen que se muestra en la pantalla es la que se genera "simulando" la elección de nuestro contrincante.

el usuario puede elegir presionando cualquiera de los botones.


para ser posible que la computadora pudiese elegir en cualquiera de las opciones, se creo una variable random que tuviera valores entre 1 y 3.





int x=(int)(Math.random()*3+1);


El botón de pasear nos manda a un mapa donde nuestra mascota es el circulo y el rectángulo que se observa es un obstáculo para éste.







La realización de esta parte más que nada se centra en poder obtener información para mejorar la versión beta.



El obstáculo de nuestra mascota fue diseñado para fines de aprendizaje en cuanto a los limites que se pusieron para que no pudiera atravesar el obstáculo.




 Ejemplos de la realización de los limites y la utilización del KeyListener.
case KeyEvent.VK_LEFT: 
  papel.setColor(Color.white);
  papel.fillRect(0,0,300,300);
  x = x - pasoX;
  papel.setColor(Color.blue);
  papel.drawOval(x, y, 20, 20);
  papel.setColor(Color.BLACK);
  papel.fillRect(80,80 ,100,40);
  labelX.setText("X:"+x);
  if(x<=0){
   x=x+10;
  }
  if(x==180 && y>=70 && y<=110){
   
  x=x+10;
  }
  
  break;
el primer limite es para que nuestra mascota no pueda salir del mapa y la segunda es para que no pueda tocar la parte del obstáculo.

Actividades por realizar:

Siguiendo la metodología se hará la versión beta, también utilizaremos la herramienta entregar lo más rápido posible.

La creación de la versión beta partir de la alpha.
Agregar un mapa mas grande y detallado para la fusión del paseo.
Comenzar a dibujar los nuevos sprites del crecimiento de la mascota.



Hasta el día de hoy en cuanto a la versión alpha esta finalizada (100%) y en metodología en general llevamos
56%



lunes, 2 de julio de 2012

Bitácora 3

Viernes 29 de junio

Este día tuvimos una reunión, en está hablamos sobre una de nuestras herramientas del método. Decidir lo más tarde posible, como lo indica hay que decir lo más tarde posible para poder así tener una idea mas clara sobre que se va hacer con el programa, sé decidió que atrasaríamos dos de las opciones que tiene el tamagochi.

  • El botón "pasear".- Este botón, no solo desplazara una animación y/o interactuá con las barras de estado de la mascota este abrirá una ventana donde el usuario podrá pasear a su mascota por un mapa, la mascota será controlada con el teclado
  • El botón "jugar".- Se ha decido que el juego que se podrá jugar será el piedra papel o tijera. 

Con estás dos opciones se pretende que el usuario se entretenga más al momento de estar cuidando de su mascota. 

Carlos Santiago 

Este día termine de dibujar los 'sprites' que faltaban al momento de accionar los botones, además de programar los últimos detalles que faltaban sobre las barras como si la mascota siente necesidad de ir al baño o que la mascota se enferme cuando el nivel de comida es mas bajo que cero y agregando más imágenes al arreglo que usamos en el Timer. Aunque no son los mejores dibujos el tiempo que tarde fue 4:54 Horas.

También estuve investigando sobre archivos para poder guardar la información sobre la mascota virtual e ideando en que forma se podría agregar al programa. 40 Minutos

Benjamín Valdez 

Estuvo investigando y estudiando  sobre como es el manejo de archivos en java, viendo la mejor forma en la que se podría usar también estuvo buscando partes y libros sobre el tema de colisiones en java para poder crear la función de pasear, ya que nuestra mascota podrá pasear por las calles. 3:15 Horas


Ricardo Lopéz 

Ayudo en la obtención de material de donde se podría basar para crear los siguientes botones, analizo y aporto ideas para la creación de las nuevas partes del programa como si el programa debería de llevar un botón para guardar o hacerlo automáticamente así como al momento de cargar. Investigo otras formas de realizar el 'paseo de nuestra mascota' sin llegar a colisiones. 2:48 Horas



Lunes 02 de Julio

Nos conectamos y discutimos sobre las variables que deberíamos de guardar para que el usuario continué cuidando a su mascota.

Santiago Serrano 

Investigo sobre colisiones para comenzar el día de mañana a programar, también pensó en el primer diseño que tendrá la ciudad donde paseara la mascota para versión alpha  piensp hacer un mapa pequeño con  unas cuantas cuadras para poder divertirnos cuidando nuestra mascota. 2:34 Horas

Benjamín Valdez
Empezó a Practicar con los archivos en java para poder utilizarlos el día de mañana y agregar la función para poder guardar los datos de la barras, el nivel y el peso de nuestra mascota. 3:10 Horas

Ricardo Lopéz 

Empezó a ver la forma en la que creara la función piedra, papel y tijera, investigo cual seria la forma más entretenida para que el usuario pueda interactuar con la mascota. 1:30 horas


Se espera que para el día Miércoles 04 de julio se pueda terminar la versión alpha para poder continuar con la siguiente Fase  que sería la versión Beta.


Evidencias de las actividades del equipo.

Estos son algunos de los 'sprites' que se utilizaron para dar vida a nuestra mascota.
En la primeras que se muestra se puede ver a la mascota triste y con un termómetro haciendo referencia a su enfermedad.


Estos segundos hablan por si solos como toda mascota real También nuestra mascota virtual cuenta con necesidades.



 Y esta ultima gama de sprites muestra a nuestra mascota leyendo un poco de periódico pasa pasar el rato.



Modificaciones al programa.

pues obviamente primero se tubo que modificar el timer agregando más condiciones, en la bitácora pasada se olvido mencionar que el timer funciona y va cambiando nuestros sprites con una cadena de Strings, también se agregaron cosas nuevas como al momento en el que nuestra mascota este realizando una acción el usuario no podrá dar click a ningún botón mientras nuestra mascota este en el evento.¿ para que hacer esto? pues el usuario podía aprovechar el evento para seguir dando click al botón de comer y poderse saltar el evento. 

hasta este momento nuestro timer y nuestro arreglo se encuentra de esta forma.



private Icon imagenes; public JLabel label = new JLabel(); public int i=0; public void mascotas(){
Timer timer = new Timer (850, new ActionListener () { public void actionPerformed(ActionEvent e) { if(standby==true){ abiertos(); imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); i++; if(i==3){ i=0; } } if(comiendo==true){ imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); bloqueo(); i++; if(i==6){ comiendo=false; i=0; abiertos(); standby=true; } } if(hablando==true){ imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); bloqueo(); i++; if(i==10){ hablando=false; i=0; abiertos(); standby=true; } } if(durmiendo==true){ imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); bloqueo(); i++; if(i==15){ i=0; durmiendo=false; standby=true; abiertos(); } } if(popob==true){ bloqueo(); boton3.setEnabled(true); imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); i++; if(i==18){ i=16; } } if(enfermo==true){ bloqueo(); boton6.setEnabled(true); imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); i++; if(i==21){ i=18; } } if(leer==true){ imagenes= new ImageIcon(getClass().getResource(imagen[i])); label.setIcon(imagenes); bloqueo(); i++; if(i==24){ i=0; leer=false; standby=true; abiertos(); } } } }); timer.setRepeats(standby); timer.start(); label.setBounds(100,100,220,200); add(label); }


En esta captura de pantalla se muestra el botón Hablar y se ve donde los botones son bloqueados para que el usuario no pueda saltar el evento.


En la siguiente imagen se ve donde se bloquean todos los botones, pero esta vez solo queda el botón baño para dar click. En esta parte del programa se puso una variable para cuando contara 6 comidas la mascota pudiera hacer sus desperdicios y así limpiarlos.


Al seguir jugando con nuestra mascota y no darle de comer aun que su barra de comida este vacía, está se enfermera y se podrá curar dando click a "emergencias".



Se espera que entre el día de hoy o mañana se termine la versión alpha para continuar con la beta y tener para el día miércoles un buen adelanto del alpha así como entregar el beta.

Hasta este punto usando las herramientas y las fases de nuestro método hemos conseguido entre el 65 - 70% de  la versión alpha y creemos haber avanzado en el trabajo total un 33% esperemos para la siguiente clase aportar más y hacerlo mas rápido ya que la siguiente herramienta que utilizaremos será 'Entregar tan rápido como sea posible'.