Bueno en esta oportunidad publico un ejercicio tomado de un examen final de la catedra Paradigmas de Programación de la carrera de Ing. en Sistemas – UTN
Espero que para el que necesite le sirva, y para el aficionado, le interese y lo resuelva.
^Saludos
_____________________________________________________________
Ejercicio Practico: SOLITARIO en Smalltalk
El planteo es definir una clase CARTA, la cual tenia las responsabilidades de generarCarta, y generarMaso, que seria una coleccion de cartas desordenadas.
Y despues te tendria que explicar con papel, pero bueno voy a hacer el intento…
La idea es que en tu mesa vas a tener “una matriz” compuesta por todas las cartas del maso, si? Una matriz, donde, cada fila represente un palo (espada, basto, oro y copa) y cada columna el numero de carta (1,2,3,….,12).
Entonces tomamos la primer carta de la primer columna de la primer fila, o sea, si tu matriz se llama “mesa”, seria la carta que esta en mesa[1,1].
seguimos?
Despues, esa carta va a tener dos atributos que van a ser, palo y numero.
Bueno lo que tenes que hacer es: si esa carta por ejemplo era el 4 de copas (huy que fea carta…) tenes que ubicarla donde corresponde en la mesa, o sea, en la fila correspondiente a copas (si nos guiamos por mi enumeracion: espada, basto, oro y copa, seria la fila 4) y en la columna correspondiente al numero de la carta, como era 4 de copas, sera en la colmna 4.
Bueno, de mas esta decir que tenes que resguardar la carta que estaba ahi, porque la carta que estaba ahi la vas a tomar y vas a hacer lo mismo, o sea, ver que numero y palo es y con eso vas a ir a la posicion mesa[numero,palo] que te haya salido y vas a repetir el procedimiento, se entiende no?
ahhhhhhh, me estaba olvidando… Cuando sacas un 12, sea de cualquier palo, te termina la ronda y sacamos otra carta (hoy sacamos la carta que estaba en mesa[1,1] bueno ahora sacariamos la carta que esta en mesa[1,2] y repetiriamos la jugada…)
cuando termina?
Se termina cuando sacamos, o descubrimos los cuatro 12’s, y ganas el juego si ordenaste toda la matriz, sino no ganaste.
Se complica tal vez un poco en la clase CARTA, porque el generar cartas tenias que controlar que no se generen cartas repetidas, asi tambien en generar maso, tenes que controlar que no pongas 2 veces las mismas cartas…
Ahora bien, tenemos que generar las cartas ALEATORIAMENTE… O sea, tambien tenemos que “inventar” la funcion random que nos devuelva un numero aleatorio entre 1 y 12 para las cartas y entre 1 y 4 si queres asociar esos numeros a las cartas (espada, basto, oro y copas).
Preparados? Listos? YA! a Programar!
================================================================

