miércoles, 2 de noviembre de 2011

Patrón de diseño

El patrón de diseño que le queda a la perfección a mi proyecto es el patrón de estrategia


Este patrón permite el intercambio de mensajes para resolver una tarea, también permite mantener un conjunto de algoritmos donde el "cliente" (jugador) puede elegir (en mi caso, "intercambiar barajas") dinámicamente el que crea conveniente según sus necesidades.


En el caso del juego de la viuda este patrón encaja, pues el jugador decide que baraja tomar o no tomar, para formar el "mejor" juego que pueda hacer como ya se ha mencionado anteriormente.

Eventos, excepciones y errores



Un evento es un suceso, algo que pasa o tiene lugar. Logre percibir los siguientes eventos descritos en la tabla:



Componente gráfico generador (botón, área, etc.)
Tipo de evento (presionar, soltar, pasar por encima de, etc.)
Acción que se dispara
Área de Comodín          
Pasar por encima del área el cursor   
Despliega el comodín de la ronda
Botón “Jugar”
Presionar
Inicia el Juego
Área de selección      
Presionar
Selecciona una baraja (Este evento se combina con Cambiar)
Botón “Cambiar”
Presionar
Selecciona  una baraja que se desea cambiar a la “viuda” (previamente se selecciona una carta)
Botón “Pasar”
Presionar
El jugador decide “no hacer nada” en esta ronda*

Botón “Tocar”
Presionar
El jugador decide que su juego es óptimo para ganar y obliga a los demás jugadores a cambiar.


*En el caso de "Pasar" se puede hacer en cualquier ronda siempre y cuando ningún jugador haya "Tocado", pues "Tocar" obliga a los otros jugadores, (excepto al que dijo toco) a cambiar alguna baraja.


La excepción se toma como una violación a las restricciones dadas, un caso 'especial' , mientras que un error es la desviación de lo correcto es decir algo que esta totalmente incorrecto, algo que no tiene lugar de ser. Pude identificar los siguiente:



Modo en que se genera
Manejo

Caso comodín
: Supóngase que se tiene un excelente juego de 4 barajas del mismo número ( Póker) y además la quinta baraja es un comodín. El conflicto es como tomar el comodín si solo hay 4 palos de  barajas (solo 4 figuras) ¿cómo puede haber 5 de un mismo número si solo hay 4 figuras: corazón, diamante, espada y trébol?


Se dará es un valor ficticio agregado, un plus, si se llegará a dar el caso  (muy raro, pero puede pasar) que dos jugadores tuvieran póker de un cierto número  entonces la persona que tenga el póker más el comodín independientemente si el número es menor  ganaría el póker más el comodín.

 Ejemplo: póker de 4  + comodín contra póker de 9, gana póker de 4 por el comodín. (Posible Error).

Caso empate:
Si dos jugadores  tuvieran  el “mismo” juego, como es esto,  bien si un jugador posee tres barajas de una misma  exactamente en número, y otro tiene una figura y 2 comodines que completen la tercia, en este caso debe ser del mismo número ejemplo: 3 tres y otro jugador un tres y dos comodines.

Se da prioridad  al  jugador que posea las tres barajas de los números con su correspondiente figura NO comodines. (Excepción )

Ejemplo: 3 barajas de número cuatro contra 1 cuatro y 2 comodines, gana el jugador que posee 3 barajas de número 4.

Interfaz Gráfica

Estas son las interfaces de mi proyecto, juego la "viuda":


Intro










Juego en funcionamiento



Diagramas de Secuencia

Los diagramas de secuencia que logre distinguir en mi proyecto son :






jueves, 20 de octubre de 2011

Reporte errores de interfaces

Ejemplo de error en la Interfaz  de tipo Metáfora


Esta es una interfaz que muestra el control que lleva una impresora al momento de mandar a imprimir algún texto.
Como podemos observar en esta interfaz está mal diseñada, supone que la “hoja” que se encuentra en el lado derecho señala el progreso que va imprimiendo la impresora, pues como lo cito Manhaeve: “¿Para que sirve el botón 

 ?, rebonina el papel y borra lo que ya estaba impreso” expreso. También parece innecesarios los botones de pues ¿para que querríamos detener la impresión? Y en un dado justificable ¿Qué tanta diferencia habría en el detener o pausar la impresión?  Y en un supuesto justificable, tendríamos que agregar algún botón para continuar.

 El botón de adelantado sirve para cambiar de página.
El botón de play sirve para iniciar/reanudar el proceso
El botón de detener  lo incluimos  en caso que el usuario  desee (o se equivoque) detener la impresión.
Por último los botones de help y about para ayudar al usuario, son más eficientes al inicio.
Como punto a  favor  de esta interfaz es que fue el primer dialogo que hemos visto de cómo utilizar una metáfora.  Desde nuestro punto de vista esta interfaz podría mejorarse de la siguiente manera.



Ejemplo de error en la Interfaz  de tipo Advertencia



El siguiente tipo de interfaz demuestra la advertencia al momento de introducir el password para ingresar a una cuenta, la idea del mensaje de advertencia que no se pueden introducir mayúsculas es buena,  pero el mensaje es intermitente pues comienza a parpadear y esto provoca una distracción al usuario e incluso lo puede frustrar.
Por esto creo que sería mejor omitir este parpadeo  y como mejora adicional pudiéramos quitar el signo de exclamación “¡” pues realmente no es motivo de alarma.


Ejemplo de error en la Interfaz  de tipo Ayuda


Esta interfaz, desde un punto de vista muy estricto,  es mala puesto que los mensajes de “ayuda” que muestra son muy lógicos , en este caso dice “Ir a la Barra” siendo que el cursor ya esta posicionado en ella, en todo caso solo tendríamos que poner la descripción solo “Barra”.
Y quedaría así:








martes, 27 de septiembre de 2011

Diagrama UML

Un diagrama UML es un lenguaje gráfico para visualizar, construir y documentar un sistema.
Tiene una apariencia similar a la de un esquema y dentro de el se pone el nombre de la clase, los atributos de dicha clase con el símbolo de  menos "-" y dos puntos  " : " mientas que los métodos se ponen con el símbolo de mas "+" y paréntesis "()". 
Como no pude instalar el Umbrello por dificultades técnicas, me vi en la necesidad de usar Paint, sería mas deshonesto ponerlo y hacer como que "aquí no paso nada" pero espero y al menos esta honestidad cuente algo.


El diagrama UML de mi proyecto es*