Full text
Sis ema pa a la Enseñanza de
Au oma ización de Juegos aplicada
al Es udio del Poke en su a ian e
Texas Hold’em
San iago Rincón Ma ínez
DOBLE GRADO EN INFORMÁTICA Y MATEMÁTICAS
UNIVERSIDAD COMPLUTENSE DE MADRID
TRABAJO FIN DE GRADO
15/05/2018
Di ec o : Manuel Núñez Ga cía
I
A mi amilia, que me ha apoyado cuando más al a me ha hecho,
y ha c eído en mí cuando ni siquie a yo lo hacía
A las pe sonas que he conocido en la uni e sidad
y que me acompaña án oda mi ida
A Belén, que ha p obado odos y cada uno de los
allos de es a aplicación a ias eces
II
Ag adecimien os
G acias a la Uni e sidad Complu ense po da me la opo unidad de ealiza es e abajo, en
pa icula a Manuel Núñez Ga cía po hace las eces de co ec o , clien e, u o y amigo,
ayudándome a lle a lo a buen pue o.
G acias asimismo a Da id Pé ez Cab e a po su desa ollo de código abie o de la he amien a
‘jpoke ’, que me ha acili ado sob emane a el desa ollo de la segunda pa e de es e abajo.
III
Índice
Resumen…………………………………………………………………………………………….VI
Abs ac …………………………………………………………………………………………….VII
In oducción…………………………………………………………………………………………..1
Poke ……………………………………………………………………………………………..1
Mo i ación del abajo…………………………………………………………………………...4
Bloque I: He amien a de P ác ica y Pues a a P ueba………………………………………………..5
He amien as y Mé odos………………………………………………………………………....5
P ime a I e ación: Desa ollo de la Aplicación Básica……………………………………...7
Especi icación de Requisi os…………………………………………………………...7
Desa ollo de los Requisi os……………………………………………………………8
P esen ación de Requisi os…………………………………………………………....10
Segunda I e ación: Co ecciones e In oducción de P o undidad y A ac i o Visual……..11
Especi icación de Requisi os………………………………………………………….11
Desa ollo de los Requisi os…………………………………………………………..12
P esen ación de Requisi os……………………………………………………………15
Te ce a I e ación: Co ecciones e In oducción del Sis ema de Sinc onización…………..15
Especi icación de Requisi os………………………………………………………….15
Desa ollo de los Requisi os…………………………………………………………..16
P esen ación de Requisi os……………………………………………………………17
Cua a I e ación: Co ecciones, In oducción de Expo ación de Da os y Eliminación de los
Conjun os de P ác ica……………………………………………………………………...18
Especi icación de Requisi os………………………………………………………….18
Desa ollo de los Requisi os…………………………………………………………..18
P esen ación de Requisi os……………………………………………………………20
Conclusión: Aplicación Final…………………………………………………………………..20
Módulo de U ilidades……………………………………………………………………...20
Módulo de P o eso es……………………………………………………………………..23
Módulo de Es udian es…………………………………………………………………….31
Bloque II: Plan illa pa a el Desa ollo y Pues a a P ueba de Es a egias Au omá icas……………..37
He amien as y Mé odos……………………………………………………………………….37
Es udio del Sis ema ‘jpoke ’………………………………………………………………37
Modi icación del Sis ema ‘jpoke ’………………………………………………………..38
IV
C eación del Sis ema de Plan illas, es a egias expe as y análisis es adís ico y
p obabilís ico de las mismas………………………………………………………………38
Conclusión: Resul ado Final…………………………………………………………………...42
Empaque ado “.ja ”………………………………………………………………………..42
Plan illa de P og amación…………………………………………………………………45
Mé odo main………………………………………………………………………………………...46
Apéndices…………………………………………………………………………………………...47
Apéndice A: código de la he amien a jPoke Lea ningFun……………………………………47
Apéndice B: código del sis ema de plan illas…………………………………………………..47
Apéndice C: código del a chi o “.ja ” usado en el sis ema de plan illas………………………47
Bibliog a ía………………………………………………………………………………………….48
V
Resumen
Es e abajo p e ende o ece sopo e a la enseñanza de la asigna u a He amien as In o má icas
pa a Juegos de Aza . Es a asigna u a es á o ien ada al desa ollo de es a egias ma emá icamen e
consis en es pa a juegos de aza , y a la implemen ación de las mismas, y se impa e en la ac ualidad
en la Facul ad de In o má ica de la Uni e sidad Complu ense de Mad id. Especí icamen e, se
o ien a a la a ian e del póke conocida como No-Limi Texas Hold’em. Pa a ello, se han
especi icado en la In oducción an o las eglas de dicho juego como un b e e es udio de la
impo ancia de es e ámbi o. Se han desa ollado dos he amien as independien es que han
cons i uido los dos bloques de la p esen e memo ia. La p ime a he amien a es un sis ema que
pe mi e accesos di e en es a p o eso es y es udian es. Los p ime os ienen la posibilidad de diseña
an o p egun as de p ác ica como exámenes. Además, pueden con ola el desempeño de los
es udian es en dichas p egun as y exámenes. Los es udian es ienen la posibilidad de ealiza las
ac i idades diseñadas po su p o eso . El sis ema se ha desa ollado de o ma modula median e un
modelo de desa ollo sc um pa a el que se ha man enido una comunicación cons an e con el di ec o
del abajo, p o eso de la asigna u a, que ha hecho las eces de clien e. La segunda he amien a
do a a los es udian es de una plan illa que pe mi e, a a és de un IDE de desa ollo, la
implemen ación sencilla de algo i mos au ónomos, con isibilización de los esul ados, así como el
es eo de los mismos a a és de pa idas con jugado es humano. Es e sis ema se ha desa ollado
omando como base el código c eado po Da id Pé ez pa a su he amien a ‘jpoke ’
(h ps://gi hub.com/dpe ezcab e a/jpoke ).
Palab as cla e: Ap endizaje Au omá ico, Enseñanza, Es adís ica, Hold’em, Juegos de
Aza , Poke , P obabilidad.
VI
Abs ac
The main goal o his wo k is o o e suppo o he eaching o he subjec He amien as
In o má icas pa a Juegos de Aza . This subjec is o ien ed o he de elopmen o ma hema ically
consis en s a egies o gambling games, and o hei implemen a ion, and i is cu en ly augh in
he Ciompu e Science School o he Complu ense Uni e si y o Mad id. Speci ically, i is o ien ed
o No-Limi Texas Hold'em a ian o poke . Fo his pu pose, he ules o he game and a b ie
s udy o he impo ance o his a ea ha e been p esen ed in he In oduc ion. We ha e de eloped
wo independen ools ha con o m he wo blocks o he manusc ip . The i s ool allows lec u es
and s uden s di e en access. Lec u es can design p ac ice ques ions and exams. In addi ion, hey
can check he pe o mance o s uden s in hese ques ions and exams. S uden s can ca y ou he
ac i i ies designed by hei lec u e . The sys em has been de eloped in a modula way by using a
sc um me hodology ha ing a pe manen communica ion wi h he supe iso , lec u e o he subjec ,
who has played he ole o clien . The second ool p o ides s uden s wi h a empla e ha allows
hem, h ough an IDE, he simple implemen a ion o au onomous algo i hms, wi h isibili y o he
esul s, as well as hei es ing by playing agains a human playe . The sys em has been de eloped
on op o Da id Pé ez's code o his 'jpoke ' ool (h ps://gi hub.com/dpe ezcab e a/jpoke ).
Keywo ds: Au oma ic Lea ning, Games o Chance, Hold’em, Poke , P obabili y, S a is ics,
Teaching.
VII
In oducción
Póke
El póke es, según la Real Academia Española de la Lengua (s. .), un “juego de naipes con ba aja
ancesa en el que se epa en cinco ca as a cada jugado , se hacen apues as y desca es, y gana
quien eúne la combinación supe io en e las a ias es ablecidas” (h p://dle. ae.es/?id=TgAzL2H).
Fo malmen e, se a a de un juego de aza , asimé ico, de suma ce o y de in o mación incomple a.
Es e iden e que el póke es un juego de aza : las ca as que cada jugado ecibe, alea o ias,
de e minan el esul ado de la pa ida. Ello complica la decisión de la es a egia a segui , dado que el
seguimien o de la es a egia “co ec a” en absolu o ga an iza la ic o ia en una pa ida conc e a,
sino que p edice la ic o ia en é minos gene ales en un conjun o de pa idas lo bas an e g ande
(consecuencia de la Ley de los G andes Núme os), siemp e que se en en e a es a egias “menos
co ec as”.
Además, el póke es un juego asimé ico, no solo po la alea o iedad de las jugadas – di e en es – en
la mano de cada jugado , sino po que, al juga se po u nos, la in o mación disponible pa a un
jugado que juega después de o o es supe io . Es de suma ce o po que lo que un jugado gana lo
pie de o o siemp e, y no se pie de dine o sal o la comisión que cob a el casino o agen e que
o ganiza el juego.
Lo que hace especialmen e in e esan e el es udio de es e juego es que se a a de un juego de
in o mación incomple a: no se conocen las jugadas ni las es a egias del es o de jugado es. Es o
di icul a sob emane a la elección de una es a egia “co ec a”, dando g an calado a la esolución de
dicho p oblema.
El p oblema de es a egias en el Póke es, además, muy di e so, pues exis en un g an núme o de
a ian es del juego, y la si uación cambia adicalmen e dependiendo de ac o es ales como el
núme o de jugado es que omen pa ido en la mano o la can idad que se es ablezca pa a la “ciega
pequeña” (la p ime a apues a del p ime jugado a la izquie da del epa ido , obliga o ia, que se á
doblada obliga o iamen e – “ciega g ande” – po el segundo jugado , a la izquie da del p ime o).
1
La a ian e en la que se cen a es e abajo es la a ian e No-Limi Texas Hold’em, conocida
ambién po sus siglas NLHE. Es a a ian e se ca ac e iza po juga se en cinco e apas (p e- lop,
lop, u n, i e y showdown), con cinco ca as que se an des elando en el cen o de la mesa y con
las cuales, además de las dos que iene ocul as en su mano, cada jugado con o ma su jugada inal.
La e apa de p e- lop es la p ime a que se juega: cada jugado ecibe las dos ca as que man end á
ocul as el es o de la pa ida y se sigue una onda de apues as, iniciada po la en ada en el “bo e”
(el dine o apos ado en una de e minada mano) de la “ciega pequeña” y la “ciega g ande”. La e apa
lop es la onda de apues as jugada as el e elado de las es p ime as ca as de la mesa, que se
e elan jun as, como una unidad. Las e apas u n y i e son las ondas de apues as as el e elado
de la cua a y quin a ca a, espec i amen e. Finalmen e, el showdown es la e apa en la que se
decide el esul ado de la mano.
La ondas de apues as se juegan po u nos, en sen ido ho a io. La apues a ac ual la ma ca el
jugado que más ichas ha apos ado en la onda y, an e esa apues a, cada jugado iene las opciones
de e i a se ( old) pe diendo las ichas que ya ha pues o en el bo e en esa onda o en an e io es y no
ol iendo a juga la mano, iguala la apues a (call) poniendo en el bo e las ichas exac as que le
pe mi an habe in oducido en la onda la misma can idad de ichas que la apues a ac ual, apos a a
su ez ( aise) in oduciendo más ichas de las necesa ias pa a hace call y es ableciendo así la
apues a en una supe io , o bien hace all-in in oduciendo odas las ichas que posee y con ando
au omá icamen e como call aunque no llegase a la can idad eque ida, o como be po el núme o de
ichas conc e o apos ado si se supe a la can idad necesa ia pa a el call.
La onda de apues as e mina cuando odos los jugado es hacen call, old o all-in an e una apues a
conc e a. Un jugado que ha hecho all-in solamen e op a al bo e acumulado en la onda en la que
hizo el all-in, las apues as de ondas pos e io es se di imen en e los jugado es que pa icipan
ac i amen e en ellas.
En la e apa showdown se e elan las dos ca as en la mano de cada jugado ac i o y se decide el
ganado (o ganado es, en caso de que haya habido algún all-in o empa e). En e a ias manos
posibles gana la mano que enga la mejo jugada y, a iguales jugadas, las ca as más al as.
Las jugadas que pueden consegui se en póke son, po o den de mejo a peo :
•Escale a Real de Colo : As, ey, eina, jo a y diez de un mismo palo.
•Escale a de Colo : Cinco ca as consecu i as de un mismo palo.
•Poke : Cua o ca as con el mismo núme o.
2
A con inuación el e o a en en a ue el desa ollo de clases de u ilidad que pe mi iesen, a a és de
mé odos es á icos, el almacenamien o de los da os de es udian es y p o eso es. Es e equisi o
c is alizó en la c eación de cua o clases (S uden Loade , S uden Sa e , Teache Loade y
Teache Sa e ). Las clases Loade cons aban de un mé odo pa a comp oba la co ección de una
con aseña conc e a y de o o que, usando el p ime o, ecibía como a gumen os un nomb e de
usua io y una cla e y, si la iden i icación e a co ec a, de ol ía un obje o ipo S uden en el caso de
la clase S uden Loade o una pa eja de lis as enlazadas con eniendo p egun as la p ime a y
exámenes y conjun os de p ác ica la segunda en el caso de la clase Teache Loade .
Po su pa e, las clases Sa e solamen e cons aban de un mé odo que, ecibiendo o bien un obje o
S uden (S uden Sa e ) o bien un nomb e, una cla e y dos lis as enlazadas, una de p egun as y o a
de exámenes y conjun os de p ác ica (Teache Sa e ), almacenaban los da os en un a chi o .da a.
Los p o eso es y es udian es se almacenaban en ca pe as sepa adas, y los a chi os .da a se
iden i icaban uní ocamen e po el nomb e de usua io. Así, podía habe un es udian e y un p o eso
con el mismo nomb e, pe o no dos es udian es ni dos p o eso es.
Es a o ma de almacenamien o de los da os p esen aba un p oblema: pa a ca ga los da os de un
es udian e e a necesa io ca ga las p egun as disponibles desde los dis in os a chi os de p o eso es,
y pa a las p egun as ealizadas e a poco p ác ico gua da una copia de oda la p egun a en cada
es udian e. Pa a esol e es o se op ó po man ene un a chi o más que hiciese las eces de base de
da os de p o eso es, de o ma que pa a ca ga un es udian e se pudiese ecibi los da os de cada
p o eso . El man enimien o de es e a chi o se ha ía a a és de dos nue as clases
Teache Da abaseSa e y Teache Da abaseLoade .
Las seis clases enca gadas del man enimien o de la in o mación se desa olla on de o ma
o almen e independien e y sin in e acciones en e ellas (el mé odo de ca ga de es udian es ecibía la
base de da os como pa áme o).
El siguien e pun o a en en a ue el desa ollo de una in e az g á ica pa a p o eso es, que se hizo a
a és de una clase p incipal Teache GUI y a ias clases g á icas de apoyo. Pa a és e desa ollo se
u iliza on las acilidades que o ece el IDE (en o no de desa ollo) Ne beans, apoyándose en la guía
que acili a en su p opia web dicho IDE.
Al desa olla en es a clase p incipal las uncionalidades de edición de p egun as, en pa icula de
p egun as de imagen, se decidió u iliza , con algunas modi icaciones, el manejado de imágenes que
o ece en su p oyec o ‘jpoke ’ Da id Pé ez. Además, se en en ó el equisi o de almacén p opio de
9
las imágenes de p egun a median e la inclusión en la clase Teache GUI de un mé odo es á ico que
ecibía una u a de o igen y o a de des ino y copiaba el a chi o. Es e mé odo e a accedido una ez
con i mada la c eación de la p egun a pa a no copia imágenes innecesa ias.
Po úl imo, se diseñó, u ilizando ambién las acilidades o ecidas po Ne beans, el en o no g á ico a
a és del cual los es udian es podían esponde conjun os de p ác ica o exámenes, apoyado en la
clase p incipal S uden GUI. Pa a en en a el equisi o de isualización de las p egun as ex uales,
se u iliza on las imágenes pa a ca as o ecidas po Da id Pé ez en el p oyec o ‘jpoke ’, y de nue o
su manejado de imágenes pa a ellas.
P esen ación de equisi os
En la p esen ación de equisi os se comp obó la
aplicación uncional desa ollada, imágenes de la
cual se pueden obse a en las Figu as 4, 5 y 6.
An e el desempeño de és a se obse a on los
siguien es de ec os:
•En las p egun as se echaba de menos
pode inclui una desc ipción de las
mismas – se o ecía la posibilidad de inclui no as, pe o no se incluía un campo pa a una
desc ipción ex ensa.
•E a ácil sali de la aplicación po
e o , o incluso ce a una en ana
de opciones que es aba ocul ando
una de las en anas p incipales y
que la aplicación se siguiese
ejecu ando pe o de o ma
in isible.
•En el p oceso de inicio de sesión
como es udian e o p o eso , se
o ecía la posibilidad de c ea una nue a cuen a en la misma en ana que la de inicia sesión
en una cuen a ya c eada, lo que esul aba an i-in ui i o.
•En la c eación de p egun as, posibilidad de e en las opciones incluidas la pun uación
asociada a las mismas, pues o que se p esen aba la opción pe o no se podía e qué
pun uación se le había asignado.
10
Figu a 4: S uden GUI en la p ime a i e ación
Figu a 5: C eación de p egun a ex ual en la
p ime a i e ación
•Sus i ución del ango de
pun uaciones en e -1 y 1 que se
había u ilizado po un ango en e
-10 y 10.
•Posibilidad pa a los es udian es de
deja la espues a a una de e minada
p egun a en blanco.
Además, en la pa e de la e ospec i a, el desa ollado de ec ó una cie a al a de modula idad,
conc e amen e en la pa e de almacenamien o y ca ga de a chi os de da os, que obligaba a la
epe ición de una impo an e can idad de código y di icul aba la in oducción de cambios en el
mismo.
Segunda I e ación: Co ecciones e In oducción de
P o undidad y A ac i o Visual
Especi icación de Requisi os
La ca ga de la segunda i e ación ue signi ica i amen e meno que la de la p ime a, si bien se
in oduje on cambios muy ele an es en la aplicación, sob e odo en lo conce nien e al a ac i o
isual gene al.
El nue o paque e de equisi os es ablecido se especi ica a con inuación:
•Do ado a la pa e isual de la aplicación de colo es que hiciesen más placen e o su uso an o
pa a p o eso es como pa a es udian es.
•Do ado a la c eación y edición de p egun as ex uales de una mayo pa e g á ica en cuan o a
la isibilidad de las ca as incluidas en una de e minada jugada, an o comuni a ias como de
mano.
•Ci ado de los da os gua dados de p o eso es y es udian es.
•Inclusión en las p egun as de posibilidad de e ique ado, simple o múl iple.
•Inclusión pa a es udian es de la posibilidad de il a los conjun os de p ác ica o exámenes
po e ique as.
•Almacenamien o de las espues as dadas po los es udian es a cada p egun a conc e a, en
luga de solamen e la no a del conjun o gene al de p egun as.
11
Figu a 6: Teache GUI en la p ime a i e ación
•Inclusión al esponde los es udian es p egun as de la posibilidad de añadi una explicación
de su elección de espues a, almacenando la misma jun o con la espues a.
•Posibilidad pa a los es udian es de e isa las espues as dadas a un conjun o de p ác ica o
examen, sin modi ica las.
Además de es e nue o paque e de equisi os, en es a i e ación se esol ie on los p oblemas
iden i icados en la p esen ación de equisi os de la p ime a i e ación, así como los iden i icados en
la e ospec i a de la misma.
Desa ollo de los equisi os
An es de empeza a en en a los nue os equisi os especi icados, el p ime pun o del desa ollo se
cen ó en esol e lo que había quedado pendien e de la p ime a i e ación. La modi icación del
ango de pun uaciones esul ó i ial, así como la inclusión de la pun uación asociada a cada opción
en el en o no isual de edición de p egun as de los p o eso es, pues o que las opciones se
implemen aban como una abla hash donde la cla e e a el enunciado de la opción y el alo su
pun uación, po lo que bas ó imp imi po pan alla el esquema “cla e: alo ” en luga del esquema
“cla e” que se imp imía p e iamen e.
Pa a o ece a los es udian es la posibilidad de deja una espues a en blanco se incluyó en la
con i mación de c eación de las p egun as la inclusión au omá ica de una opción adicional con ex o
acío y alo ada en ce o pun os. Además, se eliminó en odas las en anas el ma co de las mismas,
sup imiendo así la opción de ce a la aplicación po un medio que no ue a el bo ón de cie e
es ablecido, y a és e se le incluyó la ape u a de un mensaje de con i mación de cie e pa a e i a
sali po e o .
En cuan o al sis ema de almacenamien o de da os, se sup imió del cue po de ca ga del es udian e la
mayo pa e del código – el elacionado con la ca ga de p egun as de p o eso es – y se sus i uyó po
una llamada al mé odo de ca ga de cada p o eso , manejando di ec amen e la lis a enlazada de
conjun os de p ác ica y exámenes de uel a po és e, consiguiendo así una disminución signi ica i a
del código duplicado y una mayo modula idad ya que en el modelo ob enido oda ca ga de
a chi os de p o eso es, y sólo la ca ga de a chi os de p o eso es, se ealizaba desde la clase
Teache Loade y oda ca ga de a chi os de es udian es, y sólo la ca ga de a chi os de es udian es,
12
se ealizaba desde la clase S uden Loade . La di isión simila en las clases Teache Sa e y
S uden Sa e ya es aba conseguida al inal de la p ime a i e ación.
Re isados es os pun os, se pasó al in a la implemen ación en la aplicación de los nue os equisi os
es ablecidos.
Pa a la in oducción de colo es se ol ie on a u iliza las acilidades de Ne beans y, as p oba
a ios modelos de colo eado di e en es – sob e las en anas, ex os… – se decidió es ablece un
sis ema de colo es sob e los bo ones común a la aplicación, así como un muy pun ual colo eado de
ex os en mensajes de e o o con i mación.
En cuan o al aumen o del a ac i o isual de la c eación de p egun as ex uales, se incluyó la
imagen de las ca as añadidas, ac ualizándose és a en iempo eal g acias a un lis ene sob e las
ComboBoxes (cajas de elección múl iple) a a és de las que se escogía el palo y el núme o de las
mismas. Pa a ello se u iliza on las imágenes y el con olado de imágenes ya u ilizados pa a la
ep esen ación de ca as en la p esen ación de las p egun as a los es udian es pa a su esolución.
El siguien e paso ue el ci ado de los da os almacenados de p o eso es y es udian es, pa a el que se
u ilizó la clase de ci ado o ecida po A u o Tena (h ps://gis .gi hub.com/a u o ena/9235042).
Con es o se llegó a los dos g andes cambios uncionales de la aplicación en es a segunda i e ación:
la inclusión de e ique ado y il ado espec o al mismo y la inclusión de explicaciones de las
espues as y el almacenamien o de explicaciones y espues as.
El p ime cambio equi ió la e isión lige a de la clase Gene alQues ion, en la que se incluyó un
ec o pa a almacena en él las e ique as pe inen es. De la mano de es e cambio inie on cambios
sob e los en o nos g á icos de c eación de p egun as y sob e el mé odo de almacenamien o de da os
de p o eso es, pues e a necesa io almacena las e ique as. Po o o lado, pa a que se pudiese ealiza
el il ado, las e ique as debían se conocidas independien emen e del usua io que ab iese la
aplicación, po lo que se incluye on nue os mé odos en las clases Teache Da abaseSa e y
Teache Da abaseLoade , po en ende se una cie a simili ud en e el almacenamien o de una base
de da os de e ique as y el almacenamien o que ya se daba de una base de da os de p o eso es –
ambas almacenaban solamen e un conjun o de S ings, y ambas debían se accesibles de o ma
uni e sal desde los en o nos de dis in os usua ios.
13
Pa a e mina con la inclusión de e ique ado, es aba o ece la posibilidad a los es udian es de
il a po e ique a, pa a lo cual se incluyó en la clase S uden GUI un mé odo que, dada una lis a de
paque es de p egun as y una e ique a conc e a, ex aía una sublis a con los paque es que u ie an
alguna p egun a con dicha e ique a. También se modi icó el sis ema de selección de conjun os de
p ác ica o exámenes a ealiza pa a que sopo ase el que la lis a p esen ada di i iese de la lis a
comple a de conjun os de p ác ica o exámenes disponibles, añadiendo una comp obación de
nomb es en luga del pun e o de posición que había p e iamen e (los conjun os de p ác ica o
exámenes disponibles se p esen aban lis ados en un obje o ipo jLis po o den).
El úl imo equisi o conside ado ue el ela i o a in oduci en las p egun as la posibilidad de da
explicación a la opción elegida y el almacenamien o de es as espues as y de la explicación a ellas,
pues o que eque ía una e isión p o unda del sis ema de almacenamien o de conjun os de p ác ica
o exámenes espondidos. Finalmen e, se sus i uyó el sis ema de abla hash con cla e el conjun o de
p ác ica o examen y alo la no a ob enida po un sis ema de abla hash con cla e el conjun o de
p ác ica o examen y alo una abla hash de cla e las p egun as del conjun o o examen y alo una
pa eja de S ing que con enía la opción escogida y la explicación o ecida. Además, se incluyó en la
clase Gene alQues ion un mé odo que dado un S ing de ol ía la pun uación asociada a la opción
coinciden e con dicho S ing o bien un e o en caso de no exis i al opción. Análogamen e, en la
clase Quiz se incluyó un mé odo que, dado una abla hash de p egun as y pa ejas de espues a y
explicación, calculaba la no a del conjun o de p ác ica o examen de se posible o de ol ía un e o
en caso con a io.
De la mano de es os cambios ue on sencillas modi icaciones en el en o no g á ico de espues a a
p egun as pa a habili a la opción de apo a
una explicación, y cambios no an sencillos
en el almacenamien o de es udian es, que
pasó de almacena los conjun os de p ác ica
y exámenes como pa ejas del nomb e del
conjun o o examen y el alo numé ico de la
no a a almacena los como es uc u as más
complejas, aunque aún sin llega a
almacena duplicados de las p egun as ni de
los conjun os de p ác ica o exámenes.
14
Figu a 7: C eación de p egun a ex ual en la
segunda i e ación
P esen ación de equisi os
En la p esen ación de equisi os de la nue a
e sión de la aplicación (Figu as 7 y 8) se
obse a on los siguien es pun os:
•Al e i a los ma cos no podían
mo e se las en anas de la aplicación,
lo cual esul aba moles o.
•El colo del ex o de los mensajes de
ad e encia (ama illo) di icul aba su
lec u a.
•Al habe in oducido desc ipciones ex ensas de las p egun as, las no as y, en las p egun as
ex uales, la especi icación del núme o de jugado es esul aban innecesa ias.
En la e ospec i a, po o o lado, no se obse ó ningún pun o ele an e a mejo a .
Te ce a I e ación: Co ecciones e In oducción del
Sis ema de Sinc onización
Especi icación de Requisi os
La ca ga de especi icaciones de la e ce a i e ación ue muy conc e a: la aplicación ya uncionaba y
hacía al a implemen a los siguien es pun os:
•Almacenamien o de los da os en ed de modo que se pudiesen accede desde dis in os
disposi i os.
•Ac ualización au omá ica de los da os de la aplicación.
•Gua dado au omá ico de los da os en la ed en el mismo momen o que se gua dan en el
disposi i o local.
•Alige ado de la ca ga de espacio en el disposi i o local.
•Minimización de los iempos de espe a de ca ga.
•Segu idad en el canal de comunicación.
•Independencia de la aplicación de con enidos ex e nos en el disposi i o local.
15
Figu a 8: Teache GUI en la segunda i e ación
Desa ollo de los equisi os
Si bien la ca ga de equisi os de la e ce a i e ación pudie a pa ece meno que la de la segunda, se
con aba con el hándicap de habe abajado menos con ecnologías de almacenamien o en ed que
con ecnologías locales, lo cual obliga ía a una impo an e búsqueda de soluciones y un es udio
in enso de la ma e ia pa a halla la mejo mane a de esponde a los equisi os plan eados.
An es de eso, sin emba go, se esol ie on los p oblemas iden i icados en la p esen ación de
equisi os de la segunda i e ación. Pa a ello se ol ie on a inclui los ma cos – man eniendo e i ada
la uncionalidad de edimensión de las en anas po se isualmen e inadecuada – pe o se do ó a los
bo ones de cie e de dis in os lis ene pa a que su uso ue a equi alen e al de los espec i os
bo ones de cancela o sali ; se modi icó el colo de los mensajes de ad e encia, oscu eciéndolo, y
se e i a on los a ibu os de almacenamien o, en Gene alQues ion y Ques ion espec i amen e, de
las no as y el núme o de jugado es, ealizando en consecuencia un mínimo ediseño de los en o nos
g á icos de c eación de p egun as y espues a a ellas.
A la ho a de esol e el p oblema de la sinc onización, se alo a on dis in as opciones, como el
diseño de una aplicación en se ido que se comunicase con la aplicación na i a pa a el manejo de
los da os. Sin emba go, en a as de la sencillez, se esol ió con a con un se ido FTP en el que
almacena los da os, ac ualizando los iche os de dicho se ido al gua da en el disposi i o na i o.
Al es udia es a solución en mayo p o undidad, esal ó como incon enien e la insegu idad del
p o ocolo de comunicación FTP, po lo que inalmen e se decidió, en su luga , u iliza un se ido
SSH con una uncionalidad simila .
Exis ía el obs áculo añadido de que no se con aba con un se ido en la uni e sidad, y no se que ía
u iliza dicho se ido pa a p uebas, sino mig a allí los da os una ez la aplicación ue a es able.
Po ello, se op ó po la c eación en el o denado del desa ollado de un se ido SSH pa a pode
ealiza las p uebas sob e és e.
En la aplicación se añadió una clase SSHConnec o , que, a a és de dos mé odos ge y pu , ecibía
un di ec o io y un a chi o en el mismo y o bien lo copiaba de ese di ec o io local al co espondien e
di ec o io en el se ido o bien la in e sa, c eando en el disposi i o local el di ec o io si e a
necesa io.
16
Pa a la codi icación de es a clase se u iliza on como base dis in as guías de manejo de SSH con
ja a, que se pueden consul a en la bibliog a ía de es e abajo, esal ando la disponible en la web
h ps://p og amacion.ne /a iculo/conec a _ ia_ssh_con_ja a_1163.
O a de las cues iones a sol en a ue el cómo maneja la i ma digi al necesa ia pa a el
es ablecimien o de la conexión SSH, pues no e a una buena p ác ica acompaña la aplicación de ella
de o ma ex e na, además de a en a con a el equisi o de que uese una aplicación independien e
de ecu sos ex e nos en el disposi i o local. Finalmen e, se decidió inclui la i ma en el in e io
del .exe y ex ae la cuando hiciese al a pa a es ablece la conexión, bo ándola inmedia amen e al
acaba la ans e encia de a chi os.
La solución, al como quedó de ini i amen e, consis ía en que, cuando enía que ca ga , la
aplicación se conec aba al se ido y desca gaba los a chi os co espondien es en el disposi i o
local, donde los ab ía y manejaba. Pos e io men e, al gua da un a chi o, ol ía a conec a se al
se ido y copiaba allí el a chi o gua dado, sob esc ibiendo el exis en e si e a el caso. Es e mé odo
se daba sob e cualquie a chi o ca gado o gua dado, incluyendo los a chi os de da os de p o eso es
y es udian es, las bases de da os de p o eso es y e ique as y las imágenes an o p opias de la
aplicación como de p egun as de imagen c eadas.
Es e mé odo p esen a cie os p oblemas con el manejo de la misma cuen a de la aplicación desde
di e en es disposi i os, pe o se deses imó ese escena io pues o que en p incipio cada es udian e o
p o eso debe ene su p opia cuen a, po lo que no enía sen ido sac i ica la sencillez pa a da
espues a a una p oblemá ica p esumiblemen e insigni ican e.
Una ez decidido e implemen ado odo, se con ac ó con Luis Llana pa a solici a la habili ación de
un se ido SSH en la uni e sidad, y se c eó en él la es uc u a de di ec o ios necesa ia,
modi icando ambién en la aplicación los campos necesa ios pa a que la conexión pasase a da se
con dicho se ido .
P esen ación de equisi os
A la is a de los esul ados de desa ollo de es a e ce a i e ación esal ó solamen e un pun o: los
iempos de ca ga desconce aban, po lo que e a mejo , en lo posible, habili a una pan alla de ca ga
pa a apo a segu idad al usua io.
17
Po pa e de la e ospec i a se conside ó que e a poco p oduc i o man ene los a chi os en el
disposi i o local cuando se sus i ui ían po los del se ido SSH cuando hicie a al a, además de
a en a con a el equisi o de minimiza la ca ga de a chi os locales.
Cua a I e ación: Co ecciones, In oducción de
Expo ación de Da os y Eliminación de los Conjun os
de P ác ica
Especi icación de Requisi os
Dado el uso con inuado de la aplicación du an e el p oceso de desa ollo, en es a ase de
especi icación de equisi os habían apa ecido necesidades no conside adas p e iamen e, que die on
luga a la siguien e elación:
•Eliminación de los conjun os de p ác ica y sus i ución de los mismos po p egun as de
p ác ica.
•Posibilidad pa a los p o eso es de expo a en un o ma o accesible las espues as de los
es udian es a un de e minado examen o p egun a.
•Posibilidad pa a los es udian es de expo a sus p opios da os.
•Posibilidad pa a los p o eso es de isualiza p egun as como las isualiza ía un es udian e.
Desa ollo de los equisi os
Como en an e io es i e aciones, lo p ime o ue co egi los p oblemas iden i icados en la e apa de
p esen ación de equisi os y e ospec i a de la i e ación p e ia. Pa a ello, se oma on dos medidas:
po un lado, pa a da isibilidad al p oceso de ca ga de a chi os, se diseñó una en ana de ca ga que
se p esen a ía mien as la aplicación es á ob eniendo da os del se ido , y se ocul a ía al acaba el
p oceso; po o o, se in odujo un paso adicional al copia un a chi o desde el disposi i o local al
se ido : bo a ese a chi o del disposi i o local.
Co egidos es os p oblemas, se decidie on las soluciones pa a los nue os equisi os. El más sencillo
e a la habili ación de la posibilidad pa a los p o eso es de isibiliza una p egun a como la
isibiliza ían los es udian es, pues pa a esol e lo bas ó u iliza el módulo g á ico de espues a de
p egun as de los es udian es, solo que sin ecibi la espues a dada en si io alguno.
18
en ana desplegada. La en ana iene un ma co no edimensionable, y an e el bo ón de cie e se
compo a como an e el de “Cancel”.
La clase C ea eAccoun Teache ecibe como pa áme os un S ing con el nomb e p ede e minado
del usua io y una lis a enlazada de S ings con los nomb es de los p o eso es exis en es has a el
momen o, y despliega una en ana con un cuad o de ex o, elleno al p incipio po el nomb e
p ede e minado ecibido, dos cuad os de con aseña, un bo ón de “Cancel” y uno de “C ea e
Accoun ”. El bo ón de “Cancel” inicializa y hace isible un obje o ipo LoginTeache , y cie a la
en ana de la clase C ea eAccoun Teache en cues ión. En cuan o al bo ón de “C ea e Accoun ”,
comp ueba que el con enido del cuad o de ex o no sea un nomb e ya en uso (no es é en la lis a
enlazada ecibida como pa áme o), ni enga espacios, y que los con enidos de los cuad os de
con aseña coincidan; si alguna de esas p emisas alla, mues a una en ana de e o , en o o caso,
llama al mé odo sa e de la clase Teache Sa e , con el con enido del cuad o de ex o como nomb e,
el del p ime cuad o de con aseña como con aseña, y lis as acías de p egun as y exámenes como
lis as de ídem, y al mé odo sa eDa abase de la clase Teache Da abaseSa e, con la lis a enlazada de
nomb es, añadiéndole el con enido del p ime cuad o, como pa áme o. Con es o, la cuen a de
p o eso ha quedado c eada, y se inicializa un nue o obje o Teache GUI con los da os de dicha
cuen a como pa áme os, an es de ce a la en ana desplegada po la clase C ea eAccoun Teache .
La en ana iene un ma co no edimensionable, y an e el bo ón de cie e se compo a como an e el
de “Cancel”.
La clase C ea eOp ion ecibe como pa áme os al inicializa se el obje o ipo Edi Ques ion o
Edi O he Ques ion que la ha inicializado y un in que ma ca de cuál de los dos ipos de obje os se
a a. Despliega una en ana con dos cuad os de ex o, uno pa a el enunciado de la opción y o o
pa a su alo , y dos bo ones: de “Cancel”, que se compo a como el bo ón de “Cancel” de las clases
ChooseQues ion, AddLabel o simila es, ya is as; y de “Submi ”, que a a de con e i el con enido
del segundo cuad o de ex o a ipo Double desplegando un e o en caso de no log a lo, comp ueba
que el alo se halle en e menos diez y diez, desplegando un e o en caso con a io, y, de no habe
habido e o , se llama, con el pa de enunciado y alo como a ibu o, al mé odo addOp ion del
obje o ecibido po pa áme o. La en ana iene un ma co no edimensionable, y an e el bo ón de
cie e se compo a como an e el de “Cancel”.
En amos aho a en algunas las clases más g andes del módulo, como son Edi Ques ion,
Edi O he Ques ion o Edi Quiz. Pa a simpli ica su explicación conside emos que odas ellas eciben
el obje o del que dependen como pa áme o, al que llama emos obje o pad e, en el caso de las dos
25
p ime as puede se un obje o de ipo Teache GUI o Edi Quiz, po lo que ambién ecibi án como
pa áme o un in que ma que el ipo; en el caso de la e ce a, se a a de un obje o ipo Teache GUI.
Además, las es clases ienen ambién en común el con a con un doble cons uc o , según si se
acili a un obje o base – ipo O he Ques ion pa a la clase Edi O he Ques ion, ipo Ques ion pa a
Edi Ques ion y ipo Quiz pa a Edi Quiz – o no. En el p ime caso, el cons uc o ac ualiza la in e az
como si odos los elemen os del obje o base se hubie an añadido ya, de al modo que puede edi a se
el obje o en cues ión. En el segundo, la in e az se inicializa como si el obje o a edi a ue a un
obje o acío. Las es en anas ienen un ma co no edimensionable, y an e el bo ón de cie e se
compo an como an e el de “Cancel”, haciendo isible al obje o pad e y ce ándose.
Ambos cons uc o es an o de la clase Edi O he Ques ion como de la clase Edi Ques ion u ilizan la
clase Teache Da abaseLoad pa a ca ga una lis a enlazada de las e ique as exis en es.
La clase Edi O he Ques ion p opo ciona la in e az pa a la edición o c eación de una p egun a,
con ando con un cuad o de ex o pa a el nomb e, un á ea de ex o pa a la desc ipción, una lis a pa a
las e ique as añadidas, con dos bo ones – uno pa a añadi las, que inicializa y hace isible un obje o
de la clase Selec Label, acili ando al p opio obje o del ipo Edi O he Ques ion, el núme o dos y la
base de da os de e ique as como pa áme os; y o o pa a elimina las, usando pa a ello los índices
mínimo y máximo de selección en la lis a de e ique as –, la imagen seleccionada pa a la p egun a (si
no hay ninguna se u iliza una imagen p ede e minada que ma ca es a ca encia), con un bo ón
“Choose Image” que ab e un cuad o de diálogo de selección de a chi os, gua dando la u a del
a chi o seleccionado; una lis a que p esen a las opciones con sus pun uaciones asociadas, con dos
bo ones – uno pa a añadi opciones, que inicializa y hace isible un obje o de la clase C ea eOp ion,
acili ando al p opio obje o del ipo Edi O he Ques ion y el núme o dos como pa áme os; y o o
pa a elimila las, usando pa a ello los índices mínimo y máximo de selección en la lis a de opciones.
Es a en ana ambién cons a de los bo ones de “Cancel”, ya explicado, y “Submi ”, que comp ueba
que ni el nomb e (el con enido del cuad o de ex o co espondien e) ni la u a de imagen es én
acías y que exis an opciones. Si no es á p esen e, se añade una opción de ex o acío y pun uación
ce o. Con los da os esul an es se c ea un obje o de la clase O he Ques ion, acili ando el cual como
pa áme o se llama al mé odo addQues ion del obje o pad e an es de ce a la en ana.
Es a clase iene, po o o lado, los mé odos addLabel, selec edLabel y addOp ion pa a a ende a los
obje os que gene a. El p ime o si e pa a almacena en la base de da os de e ique as del se ido
cuando se ha c eado una nue a e ique a: ecibe és a como pa áme o, la añade a la lis a enlazada de
26
e ique as que ya había ca gado y llama al mé odo sa eLabels de la clase Teache Da abaseSa e con
la nue a lis a enlazada como pa áme o. El segundo añade a la lis a de e ique as de la p egun a
ep esen ada la ecibida como pa áme o, en caso de que dicha e ique a no es u ie a ya en la lis a, y
hace isible la en ana, ese eando la is a. El úl imo ecibe como pa áme o una pa eja de un
S ing (el enunciado de la opción) y un Double (su alo ), añade el enunciado como cla e y el alo
como alo a la abla hash de opciones de la p egun a ep esen ada y hace isible la en ana,
ese eando la is a.
La clase Edi Ques ion es muy simila a la clase Edi O he Ques ion, sal o po que no hay imagen ni
u a de la misma, y po que al inicializa ins ancias de la clase Selec Label o C ea eOp ion el núme o
que acili a como pa áme o es el uno en luga del dos. Además, iene nue os componen es y
mé odos: iene dos imágenes de ca as, manejadas de o ma simila a la o ma en la que se
manejaba la imagen en la clase AddCa d con los dos jComboBox que cada una de las imágenes
iene a su de echa. Es as dos ca as o man las ca as de la mano de la p egun a ex ual ep esen ada
y, al pulsa “Submi ”, se comp ueba que no sean iguales en e sí ni a ninguna ca a de la mesa,
mos ando un e o en luga de c ea la p egun a en caso con a io. También iene una lis a de ca as
que ep esen a a las comuni a ias, con dos bo ones – uno pa a añadi ca as, que inicializa y hace
isible un obje o de la clase AddCa d, acili ándole el p opio obje o de la clase Edi Ques ion como
pa áme o, sal o que ya haya cinco ca as comuni a ias, en cuyo caso mues a un e o ; y o o pa a
elimina las, usando pa a ello los índices mínimo y máximo de selección en la lis a de ca as
comuni a ias –. También se comp ueba, al pulsa “Submi ”, que las ca as comuni a ias sean ce o,
es, cua o o cinco, pa a que esponda a alguna de las ases del juego.
El mé odo adicional de la clase Edi Ques ion espec o de Edi O he Ques ion es el mé odo addCa d,
que ecibe como pa áme o una ca a, comp ueba que no coincida con ninguna de las ca as
comuni a ias ya añadidas haciendo isible un e o si lo hace, y añade, si no es así, la ca a ecibida
a la lis a de ca as comuni a ias, haciendo isible la en ana y ac ualizando la is a.
Tan o los obje os de la clase Edi Ques ion como los de la clase Edi O he Ques ion, al pulsa
“Submi ”, si no hay opciones de pun uación máxima (diez pun os), dan de al a la p egun a
co ec amen e pe o hacen isible un mensaje de ad e encia.
La clase Edi Quiz ep esen a un obje o de ipo Quiz, pa a lo que hace isible una en ana con un
cuad o de ex o pa a el nomb e del examen y una lis a donde se ep esen an las p egun as incluidas
en el examen po su nomb e. La en ana iene ambién seis bo ones, un bo ón “Cancel”, que ya ha
sido explicado, un bo ón “Dele e Ques ion” que elimina la(s) p egun a(s) seleccionada(s) en la lis a
27
de p egun as usando los índices mínimo y máximo de selección, un bo ón “Edi Ques ion” que
elimina la p egun a seleccionada después de u iliza la pa a pasa la como pa áme o pa a la
inicialización de un obje o de la clase Edi Ques ion o Edi O he Ques ion, según el ipo de p egun a,
ambién se pasa como pa áme o el p opio obje o ipo Edi Quiz y el núme o dos y se hace isible el
obje o c eado; ambién hay un bo ón “C ea eQues ion” que c ea y hace isible un obje o de la clase
ChooseKindQues, acili ándole como pa áme os el p opio obje o ipo Edi Quiz y el núme o dos.
Los dos bo ones es an es son los bo ones “Add Exis ing Ques ion” y “Submi ”, el p ime o c ea un
obje o de la clase ChooseQues ion, con pa áme os la lis a de p egun as que se pueden u iliza y el
p opio obje o Edi Quiz (la lis a de p egun as la ecibía p e iamen e el obje o Edi Quiz en su
cons uc o ); el segundo comp ueba que el examen enga nomb e y al menos una p egun a,
haciendo isible un mensaje de e o si no es así, y cons uyendo con la lis a de p egun as y el
nomb e un obje o ipo Quiz que se pasa como pa áme o al mé odo addQuiz de la clase pad e an es
de ce a la en ana si sí es así.
O o campo de la en ana, no edi able, in o ma del núme o máximo de pun os que iene el examen
en cada momen o (cada p egun a se conside a que da un máximo de diez pun os).
También hay en la clase Edi Quiz un mé odo más pa a da espues a a los obje os que lo p ecisan:
un mé odo addQues ion que ecibe como pa áme o una p egun a y, si no es á ya añadida, la añade
a la lis a de p egun as. Además, si la p egun a que ecibe es ipo O he Ques ion copia la imagen en
el di ec o io señalado po el alo imgRou e de aquella a a és de un mé odo del obje o pad e ( ipo
Teache GUI), y modi ica el alo de imgRou e pa a que apun e en la nue a di ección. Después hace
isible la is a, ac ualizada.
En cuan o a la clase LoginTeache , es la enca gada de ab i las cuen as de p o eso . Pa a ello, cuen a
con una en ana con un campo de ex o, uno de con aseña y es bo ones, el de “Cancel”, que c ea
y hace isible una ins ancia de la clase Exi Con i ma ion; el de “C ea e Accoun ”, que c ea y hace
isible un obje o de la clase C ea eAccoun Teache , acili ándole como pa áme o el con enido del
cuad o de ex o, an es de ce a el p opio obje o ipo LoginTeache , y el de “Login”, que in en a
ealiza la ca ga de los da os de p o eso median e una llamada al mé odo load de la clase
Teache Loade , con el nomb e in oducido en el cuad o de ex o y la con aseña in oducida en el
campo de con aseña como pa áme os. Si la ca ga no iene éxi o, se hace isible un mensaje de
e o y, si lo iene, se c ea y hace isible un obje o de ipo Teache GUI con ese mismo nomb e y
cla e, y las lis as de p egun as y exámenes de uel as po el mé odo load de la clase Teache Loade ,
an es de ce a se la p opia en ana de LoginTeache .
28
La en ana iene un ma co no edimensionable y an e el bo ón de cie e se compo a como an e el
de Cancel.
La clase Selec Label ecibe como pa áme os un obje o pad e ipo Edi Ques ion o
Edi O he Ques ion, así como un in que ma ca el ipo del obje o pad e y una lis a enlazada de
obje os de ipo S ing (las e ique as ya exis en es). Pa a cumpli su unción, la clase despliega una
en ana con un elemen o ipo jComboBox con las e ique as ya exis en es y es bo ones, el de
“Cancel”, que hace isible el obje o pad e y cie a la en ana; el de “C ea e Label”, que c ea un
obje o ipo AddLabel con el p opio obje o Selec Label como pa áme o, y el de “Add”, que llama al
mé odo selec edLabel del obje o pad e con el S ing de la clase elegida median e el desplegable
jComboBox como pa áme o y cie a la en ana.
Además, ambién cuen a con un mé odo addLabel que ecibe un S ing como a gumen o y, si no lo
con iene ya la lis a de e ique as disponibles, lo añade a és a y llama al mé odo addLabel de la clase
pad e pa a que se gua de la nue a lis a de e ique as disponibles. Después de es o, hace isible la
en ana, ac ualizada.
La en ana iene un ma co no edimensionable y an e el bo ón de cie e se compo a, de nue o,
como an e el de Cancel.
La úl ima clase g á ica de es e módulo es la clase Teache GUI, la que si e como cen o de con ol
de la pla a o ma de p o eso . Su cons uc o ecibe un nomb e, una cla e y sendas lis as de
p egun as, p egun as de o os p o eso es y exámenes. Es a clase p esen a una en ana con es
g andes lis as – la de p egun as p opias, la de p egun as de o os p o eso es y la de exámenes –,
cada una con cinco bo ones: uno pa a añadi , uno pa a elimina , uno pa a edi a , uno pa a
p e isualiza y o o pa a expo a los da os, excep o la de p egun as de o os p o eso es, que
solamen e cuen a con un bo ón de p e isualización. Además de eso, cuen a con un obje o jLabel
que in o ma del nomb e de usua io, un bo ón pa a cambia la con aseña y o o pa a sali .
Los bo ones de añadi , edi a y elimina de la lis a de p egun as uncionan como los de la clase
Edi Quiz, solo que acili ando como pa áme o un uno en luga de un dos. El bo ón de p e isualiza
inicializa y hace isible una ins ancia de la clase Quizzing o O he Quizzing (según el ipo de la
p egun a) del paque e exe cises.s uden sSec ion, acili ándole como pa áme os la p egun a en
cues ión, el obje o Teache GUI y el núme o es. El bo ón de expo a da os ejecu a el mé odo
expo Ques da a de la clase Teache Sa e , con el nomb e del p o eso y la p egun a seleccionada
29
como a gumen os. Si se ejecu a co ec amen e, hace isible un mensaje in o ma i o de el a chi o
“.cs ” de salida.
En cuan o a los bo ones de la lis a de exámenes, el de añadi inicializa y hace isible un obje o ipo
Edi Quiz acili ándole como a gumen os la lis a de p egun as c eadas y de o os p o eso es y el
p opio obje o Teache GUI, el de edi a hace lo mismo pe o eliminando el examen seleccionado
después de acili á selo al cons uc o de Edi Quiz como e ce a gumen o, mien as que el de
elimina elimina el examen seleccionado. El de p e isualiza inicializa un obje o ipo
QuizCon olle , acili ándole como a gumen os el examen seleccionado, el obje o Teache GUI y el
núme o es. El bo ón de expo a da os ejecu a el mé odo expo Tes da a de la clase Teache Sa e ,
con el nomb e del p o eso y el examen seleccionado como a gumen os. Si se ejecu a
co ec amen e, hace isible un mensaje in o ma i o de el a chi o “.cs ” de salida.
El bo ón de cambio de con aseña inicializa y hace isible un obje o de la clase ChangePasswo d,
con la cla e, el núme o uno y el p opio obje o Teache GUI como a gumen os, mien as que el de
sali inicializa y hace isible un obje o de la clase Exi Con i ma ion.
La en ana iene un ma co no edimensionable y an e el bo ón de cie e se compo a, en es e caso,
como an e el de sali .
La clase ambién cuen a con mé odos pa a a ende a o os obje os, como el mé odo
changedPasswo d, con la nue a cla e como a gumen o, que modi ica la cla e y gua da los da os
del p o eso – con la cla e modi icada – a a és del mé odo sa e de la clase Teache Sa e ; el
mé odo addQues ion que unciona de o ma simila al mé odo addQues ion de la clase Edi Quiz
solo que después almacena los da os del p o eso , con la lis a de p egun as modi icada, a a és del
mé odo sa e de la clase Teache Sa e ; el mé odo addQuiz que añade el examen que ecibe como
pa áme o a la lis a de exámenes si no es á ya en ella, hace isible la en ana ac ualizada y
almacena los da os del p o eso , con la lis a de exámenes modi icada, a a és del mé odo sa e de la
clase Teache Sa e , y el mé odo es á ico mo eImage que ecibe una u a de o igen y o a de des ino,
copia el a chi o que haya en el o igen a la u a des ino y llama al mé odo pu de SSHConnec o pa a
que copie el a chi o a la co espondien e di ección del se ido .
Nos queda obse a las clases Teache Sa e y Teache Loade , que con ienen los mé odos es á icos
sa e y load espec i amen e y, en el caso de Teache Sa e , ambién los mé odos expo Ques da a y
expo Tes da a y, en el caso de Teache Loade , ambién el mé odo ge Teache In o. El mé odo load
ecibe un nomb e de usua io una con aseña y una base de da os de p o eso es, ae el a chi o
30
co espondien e al nomb e de usua io al disposi i o local usando el mé odo ge de SSHConnec o ,
lo ab e, lo desci a usando ciphe U ils, comp ueba que la con aseña ecibida coincide y pa sea el
es o de los da os u ilizando dis in os ma cado es con el o ma o “%EO[..]&”. Después, ca ga las
p egun as del es o de p o eso es usando la base de da os. Si el p oceso se da comple o
co ec amen e, de uel e una pa eja con una pa eja de lis as, la p ime a de p egun as p opias y la
segunda de p egun as de o os p o eso es, y una lis a de exámenes; en o o caso, lanza una
excepción.
El mé odo sa e, po o o lado, ecibe un nomb e, con aseña, una lis a de p egun as y una lis a de
exámenes y los almacena localmen e en un a chi o que iene dado po el nomb e, con la con aseña
en p ime luga y u ilizando los ma cado es co espondien es, y ci ando la in o mación median e
ciphe U ils. Una ez gua dado localmen e, se u iliza el mé odo pu de SSHConnec o pa a deja el
a chi o en el se ido .
Los mé odos expo Tes da a y expo Ques da a eciben espec i amen e un examen y una p egun a
y e isan uno a uno los es udian es, ob eniendo los da os de los que hubie en ealizado la p egun a o
examen y almacenándolos en o ma o “.cs ”, o ma eados y sepa ados po comas. El nomb e del
a chi o iene dado po el nomb e de la p egun a o examen.
El mé odo ge Teache In o si e pa a da se icio al módulo de es udian es, es muy simila al
mé odo load pe o no usa cla e ni base de da os y simplemen e de uel e una pa eja de lis as, la
p ime a con las p egun as p opias y la segunda con los exámenes.
Con es o llegamos al úl imo módulo: el módulo de es udian es. Con el in de alige a la ca ga y no
epe i in o mación, al explica dicho módulo nos e e i emos a menudo a o mas de es uc u a las
clases is as en es e módulo.
Módulo de Es udian es
El módulo de es udian es, en el paque e exe cises.s uden sSec ion, iene cie as simili udes con el de
p o eso es. Cons a de las clases C ea eAccoun , LoginS uden , O he QuesView, O he Quizzing,
QuesView, QuizViewe , QuizCon olle , Quizzing, S uden , S uden GUI, S uden Loade y
S uden Sa e .
La clase S uden modela el es udian e, cons ando de a ibu os pa a nomb e, con aseña, exámenes
disponibles, p egun as disponibles, exámenes hechos y p egun as hechas. Los dos p ime os son
31
a ibu os ipo S ing; los dos siguien es son lis as enlazadas, de obje os ipo Quiz en el p ime caso y
ipo Gene alQues ion en el segundo, y los dos úl imos son ablas hash con cla e de ipo Quiz en el
p ime caso y Gene alQues ion en el segundo, y con alo ipo abla hash de cla e
Gene alQues ion y alo pa ejas de S ing en el p ime caso, y ipo pa eja de S ing en el segundo
caso.
En cuan o a mé odos, la clase iene mé odos ge e de odos sus alo es, y se e de odos menos el
nomb e. Además, cuen a con los mé odos addTes Done, que comp ueba que el es que ecibe como
a gumen o es é en e los disponibles y no en e los ealizados, y lo añade a los ealizados con la
abla hash de alo ambién ecibida como a gumen o, pa a después e i a lo de los disponibles; y
addQues ionDone, que hace lo mismo que addTes Done pe o con p egun as en luga de exámenes y
no e i a la p egun a de las disponibles.
Las clases C ea eAccoun y LoginS uden son muy simila es a las clases C ea eAccoun Teache y
LoginTeache del módulo de p o eso es, solo que manejan obje os de ipo S uden en luga de
conjun os de nomb e, cla e, lis a de p egun as y lis a de exámenes, y se comunican con
S uden Sa e , S uden Loade y S uden GUI en luga de Teache Sa e , Teache Loade y
Teache GUI, espec i amen e.
La clase equi alen e a Teache GUI del módulo de es udian es se ía S uden GUI, sin emba go, dada
la g an di e encia de uncionalidades en e ambas clases, es impo an e es udia la clase S uden GUI
con algo más de de alle. La clase se inicializa ecibiendo siemp e como pa áme o un obje o de la
clase S uden , y cons a de una en ana con es lis as: la p ime a mues a las p egun as disponibles,
la segunda los exámenes disponibles y la e ce a los exámenes ealizados. Además, la p ime a iene
dos bo ones, uno pa a ealiza la p egun a y o o pa a comp oba la espues a que se dio, la segunda
iene un solo bo ón, pa a hace el examen, y la e ce a uno pa a comp oba la espues a que se dio.
La p ime a y la segunda lis as ienen cada una un obje o jComboBox que pe mi e elegi alguna de
las e ique as exis en es o bien la e ique a gené ica “All”, de o ma que se il en los elemen os de la
lis a a solo aquellos que con engan la e ique a seleccionada – es o se implemen a median e un
lis ene de cambios del jComboBox, con olado po un boolean que ma que cuándo la en ana es á
inicializada y es able, como ya ocu ía, po ejemplo, en la clase AddCa d –. Po úl imo, hay un
jLabel que mues a el nomb e del usua io, o o que mues a su pun uación media (de los exámenes)
y unos bo ones “Change Passwo d” y “Exi ” equi alen e a los homónimos en Teache GUI.
También hay un bo ón “Expo Da a” que pe mi i á expo a los da os del es udian e a un a chi o en
o ma o “.cs ” sepa ado po comas.
32
El bo ón de ealiza p egun a inicializa y hace isible un obje o de la clase Quizzing u
O he Quizzing, según si la p egun a es de ipo Ques ion u O he Ques ion, con pa áme os la
p egun a seleccionada, el p opio obje o S uden GUI y el núme o uno; el bo ón de ealiza examen,
en cambio, solamen e inicializa y co e un obje o (no g á ico) de ipo QuizCon olle , con
pa áme os el es seleccionado, el p opio obje o S uden GUI y el núme o dos. Ambos in isibilizan
la en ana.
Po su pa e, el bo ón de isibiliza p egun a comp ueba que la p egun a seleccionada se ha
ealizado, exponiendo un mensaje de e o en caso con a io, y inicializa y hace isible un obje o de
la clase QuesView u O he QuesView según si la p egun a seleccionada es de ipo Ques ion u
O he Ques ion, con pa áme os la p egun a seleccionada, la espues a que se dio a dicha p egun a,
la explicación que se o eció y el obje o S uden GUI. El bo ón de isibiliza examen, po su pa e,
inicializa y hace isible un obje o QuizViewe , con pa áme os el es seleccionado, la abla hash
asociada con las p egun as del es y sus espues as y explicaciones o ecidas y el p opio obje o
S uden GUI. Ambos bo ones in isibilizan la en ana.
Res a comen a el bo ón de expo a da os, que simplemen e ejecu a el mé odo es á ico
expo S uDa a, de la clase S uden Sa e , y mues a un mensaje no i icando la di ección del a chi o
“.cs ” esul an e si no hay e o es.
La en ana iene un ma co no edimensionable y an e el bo ón de cie e se compo a como an e el
de sali .
Además, la clase cuen a con mé odos necesa ios pa a implemen a las elaciones con o os obje os:
el mé odo changedPasswo d es equi alen e al mé odo del mismo nomb e en la clase Teache GUI;
el mé odo answe edQues ion, po su pa e, ecibe como a gumen o una p egun a, un S ing de
espues a y un S ing de explicación, los usa como pa áme os pa a llama al mé odo
addQues ionDone del obje o S uden – el que se ecibió en el cons uc o , que se man iene como
a ibu o de clase – y, después, llama al mé odo es á ico sa eS uden de la clase S uden Sa e con el
mismo S uden como pa áme o, pa a inalmen e hace isible la en ana ac ualizada. El mé odo
quizzDone es muy pa ecido a addQues ionDone: ecibe un obje o Quiz, y una abla hash con las
p egun as del examen con sus espues as y explicaciones, y llama con ello al mé odo addTes Done
del S uden , pa a luego usa és e como a gumen o de sa eS uden y después hace isible la en ana
ac ualizada.
33
Las clases Quizzing y O he Quizzing se enca gan de mos a una p egun a en un o ma o en el que
pueda ecibi espues a, y de no i ica dicha espues a. Ambas se inicializan ecibiendo como
pa áme os la p egun a que deben ep esen a – ipo Ques ion en la p ime a y O he Ques ion en la
segunda –, el obje o pad e al que deben no i ica la espues a, ipo S uden GUI, QuizCon olle o
Teache GUI, y un in pa a ma ca cuál es el ipo en conc e o del obje o pad e. Las en anas
gene adas po es as clases se di e encian en el aspec o de los campos no modi icables, que en la
p ime a incluyen las dos ca as de la mano y las has a cinco de la mesa, ep esen adas g á icamen e,
y en la segunda la isualización de la imagen asociada a la p egun a. Además de es o, ambas
en anas poseen un campo en el que puede lee se la desc ipción de la p egun a, un á ea de ex o en
el que in oduci una explicación a la opción elegida, un obje o jComboBox cuyas opciones son las
dis in as opciones de la p egun a ep esen ada, y un bo ón “Nex ”. Dicho bo ón llama al mé odo
answe edQues ion del obje o pad e, con pa áme os la p opia p egun a, la opción elegida en el
obje o jComboBox y la explicación o ecida en el á ea de ex o, y hace isible un mensaje
in o mando de cuál e a la opción más co ec a, si el obje o pad e es ipo S uden GUI o
QuizCon olle . Si es ipo Teache GUI simplemen e lo hace isible. En cualquie a de los dos casos,
la en ana se cie a.
La en ana iene un ma co no edimensionable, y an e el bo ón de cie e hace isible un mensaje de
e o in o mando que es necesa io e mina la p egun a o examen an es de sali .
La clase QuizCon olle se enca ga de maneja la ealización de exámenes. Pa a ello, cuen a con los
siguien es a ibu os: un a ibu o ipo Quiz, que almacena el examen que se es á ealizando,
inicializado median e un a ibu o de es e ipo ecibido en los pa áme os del cons uc o ; un obje o
pad e de ipo S uden GUI o Teache GUI, ambién ecibido en el cons uc o jun o con un pa áme o
ipo in que ma ca el ipo de obje o, y que se almacena en o o a ibu o; una abla hash de cla e ipo
Gene alQues ion y alo pa ejas de S ing, inicializada acía, y en la que se gua dan las espues as
y explicaciones que se an dando a las p egun as del examen, y un in más que si e de señalado de
cuál es la siguien e p egun a que oca esponde , inicializado a ce o en el cons uc o .
El manejo de es os a ibu os se da g acias al mé odo answe edQues ion y al mé odo unQuizz. El
p ime o ecibe como pa áme os una p egun a y dos S ing (la espues a dada y la explicación), y
los in oduce en la abla hash de espues as, inc emen a en uno el señalado y llama a unQuizz.
És e mé odo unQuizz, po su pa e, comp ueba si el señalado apun a ue a del ango de p egun as
del examen – si su alo es mayo que el amaño de la lis a enlazada de p egun as –. Si no es así,
inicializa y hace isible un obje o Quizzing u O he Quizzing según el ipo de la p egun a apun ada
po el señalado , con dicha p egun a como a ibu o, además del p opio obje o QuizCon olle y el
34
Donde z ep esen a el máximo alo pa a el cual, en una no mal de media ce o y a ianza uno, la
p obabilidad de que se supe e (P(Z≥z)) es meno que 0’05.
Comp obando en la abla co espondien e (Figu a 10), emos que ese alo es el alo 1’64.
Sus i uyendo en los pun os ex emos:
Y ope ando:
O lo que es lo mismo:
Es deci que, como se puede comp oba , la p opo ción iene un ma gen de e o pequeño y
dependien e de c ( ).
41
Figu a 10: Tabla de la dis ibución No mal de media ce o y a ianza uno
Po úl imo, se mejo a on lige amen e las es a egias pa a que en ningún caso apos a an ichas de
más si podían o za el all-in del i al con una can idad meno al p opio all-in.
También se incluyó como jugable la es a egia alea o ia ya o ecida po Da id Pé ez en su p oyec o.
Implemen ados es os bo s, así como las a iaciones comen adas en el sis ema ‘jpoke ’, se
empaque ó odo ello en un a chi o “.ja ” que hiciese las eces de lib e ía del p oyec o, y se
p ocedió al desa ollo de plan illas pa a nue as es a egias desa olladas po los alumnos y de un
mé odo main que ejecu ase el conjun o.
Pa a las plan illas, se plasmó en comen a ios sob e implemen aciones acías de la in e az IS a egy
un esumen del uncionamien o del sis ema o ien ado a hace lo más i ial posible el desa ollo.
Po su pa e, en el mé odo main se incluye on p ocesos pa a cus omiza las pa idas, de o ma que
se pudiesen o ien a a la p ueba masi a de es a egias o a una isualización de la o ma de juga de
las mismas.
Conclusión: Resul ado Final
La he amien a iene es elemen os p incipales: el empaque ado “.ja ”, la plan illa de p og amación
y el mé odo main de ejecución.
Empaque ado “.ja ”
En el a chi o “.ja ” encon amos el sis ema ‘jpoke ’ comple o, con las a iaciones in oducidas, así
como el bo expe o con a el que juga .
El sis ema ‘jpoke ’, diseñado po Da id Pé ez, o ece la uncionalidad de lanza pa idas de poke
median e un sis ema de máquina de es ados, donde cada es ado ealiza las unciones pe inen es y,
una ez ha e minado, ansiciona a un de e minado es ado siguien e según si se cumplen una se ie
de equisi os u o os.
En e las uncionalidades implemen adas sob e el sis ema de Da id Pé ez encon amos el jugado
humano, una implemen ación pa icula de la in e az IS a egy.
42
La in e az IS a egy es, en el sis ema de Da id Pé ez, la que implemen an los dis in os jugado es.
Cuen a con una se ie de mé odos que se explica án en mayo p o undidad al explica la plan illa de
p og amación. El p incipal mé odo, sob e el que se implemen a el jugado humano, es el mé odo
ge Command, al que el sis ema llama espe ando como esul ado una de e minada jugada en e las
posibles ( old, call, be con el núme o conc e o de ichas apos adas o bien all-in). Pa a la
implemen ación del jugado humano, en es e mé odo se p ocede a mos a dis in as en anas de
opciones, u ilizando los mé odos o ecidos po la clase JOp ionPane, de o ma que se pueda decidi
la jugada manualmen e. En p ime luga se es ablece un lis ado de las opciones a elegi – las
dis in as posibles jugadas – en el o ma o de un a ay ipo S ing, así como el icono a mos a en la
en ana. Hecho es o, se in oca el mé odo showInpu Dialog, en su e sión de sie e a ibu os (el
obje o en el que se debe inclui , null en nues o caso; el mensaje que debe mos a , “Selec you
command”; el í ulo, “Command”; el ipo de cuad o de diálogo en e a ios o ecidos po la misma
clase JOp ionPane, u ilizamos DEFAULT_OPTION; el icono a mos a , que se á el an es
es ablecido; las opciones posibles, ambién las es ablecidas p e iamen e, y la opción
p ede e minada, que se á old en nues o caso). És e mé odo de uel e un obje o que cas ea emos a
S ing pa a conoce la opción elegida y a a la con un swi ch que de ol e á la jugada pe inen e. En
el caso conc e o de be , u iliza emos de nue o un showInpu Dialog, aho a de cua o a ibu os
(obje o en el que inclui lo, a null; mensaje a mos a , “Numbe o chips”; í ulo, “Numbe O
Chips”, y ipo de diálogo, DEFAULT_OPTION), que mues a un cuad o de diálogo con un cuad o
de ex o pa a in oduci en él el núme o de ichas que se apues an. Si no se in oduce un núme o
álido, el pa se a ipo long que se hace a con inuación alla á, se mos a á usando JOp ionPane un
mensaje de e o y se epe i á la p egun a.
De es e modo se consigue hace in e ac i a la elección de jugada, de ol iendo el comando
seleccionado po el jugado .
En es a implemen ación de IS a egy, implemen ada en la clase Playe S a egy en el paque e
o g.poke .sample.s a egies, en el que ambién se encuen an las implemen aciones ya o ecidas po
Da id Pé ez, ambién se especi ica el nomb e del jugado , “Playe ”.
O a a iación impo an e en el sis ema que o ece Da id Pé ez es la sus i ución del mé odo de
lanzamien o del sis ema po un nue o mé odo que ecibe a ios alo es y ejecu a el sis ema según
és os, de ol iendo el esul ado de la ejecución.
43
La implemen ación de es e nue o mé odo un se encuen a en la clase MainCon olle , en el
paque e o g.poke .main, y ecibe como pa áme os las dos es a egias que juga án la pa ida
(implemen aciones de IS a egy), pues o que solamen e se ha con emplado la implemen ación de un
modo de juego Heads Up, o de dos jugado es; un en e o que ma ca el modo de juego (uno pa a
mos a la in e az g á ica y dos pa a no hace lo); un en e o que ma ca el núme o de i e aciones, el
núme o de pa idas a juga ; un long que ma ca el núme o de ichas de la ciega g ande, y un long
que ma ca el núme o de ciegas g andes con el que se juega la pa ida.
Pa a acili a la elección del modo de juego, la clase MainCon olle incluye dos cons an es
públicas VISUAL_GAME y NO_VISUAL_GAME.
A pa i de los pa áme os ecibidos, el mé odo un es ablece las opciones de pa ida incluyendo las
es a egias ecibidas como pa áme o, haciendo isible la mesa si p ocede, mezclando los jugado es
pa a que jueguen en un o den alea o io, inicializando las pun uaciones a ce o y en ando en un bucle
que juga á an as pa idas como se hayan especi icado, cada una de ellas con unas condiciones
simila es – las pa idas se án de dos jugado es, si un jugado hace es apues as no álidas
consecu i as se le expulsa á de la pa ida, la pa ida end á un máximo de mil ondas si nadie ha
pe dido del odo an es, el iempo pa a esponde se á el máximo posible pa a e i a que si un
jugado humano duda an es de esponde se ome su jugada como nula, el núme o de ichas
iniciales de cada jugado se á el es ablecido en la llamada a un, cada ein e ondas jugadas se
aumen a á la ciega y és a empeza á a la can idad es ablecida en los pa áme os de la llamada – y
mezclando de nue o el o den de los jugado es. Una ez es ablecidos así los ajus es de la pa ida, se
inicializa el con olado de la misma y se ejecu a has a que e mine, hecho lo cual se almacenan los
esul ados ob enidos en las pun uaciones de los jugado es (una ic o ia suma uno y una de o a
ce o, pe o si se ha e minado la pa ida sin que nadie pie da odas sus ichas, se suma á una
p opo ción – es deci , si al acaba la pa ida un jugado iene el doble de ichas que el o o, al
p ime o se le suman dos e cios de pun o y al segundo un e cio). Después de es o, si el modo de
juego es g á ico, se hace una b e e pausa pa a que el usua io obse e el esul ado del in de la
pa ida y se uel e al p incipio del bucle.
Una ez se han jugado las pa idas es ablecidas, se de uel e una abla hash con cla e el nomb e de
los jugado es y alo su pun uación inal.
La úl ima no edad implemen ada en el a chi o “.ja ” son los bo s expe os, an o ag esi o como
laid-back, en e los cuales el p ime o es mejo con un núme o meno de ichas iniciales y ice e sa.
44
Plan illa de p og amación
La plan illa de p og amación es la implemen ación de la in e az IS a egy sob e la que se espe a
que los alumnos desa ollen sus p opios bo s. No es o a cosa que una implemen ación acía de
dicha in e az p o undamen e comen ada pa a que sea sencillo comple a la.
Aunque la explicación de allada puede obse a se en la p opia plan illa, es con enien e e un
b e e esumen.
Los mé odos disponibles son el cons uc o , ge Command, ini Hand, endHand, endGame, check,
onPlaye Command y ge Name. De és os mé odos, los imp escindibles son el cons uc o ,
ge Command y ge Name.
El cons uc o pe mi e da alo es iniciales a los a ibu os que se decidan inclui en la es a egia, y
es imp escindible da alo al nomb e, ya que se usa á a lo la go de las pa idas. Po es e mismo
mo i o es imp escindible la exis encia e implemen ación de un mé odo ge Name.
Como ya hemos comen ado, el mé odo ge Command es al que la pa ida llama cuando es necesa io
conoce la jugada que ealiza á el jugado en cues ión, po lo que debe se el que use los a ibu os
que se hayan incluido, jun o con el es ado de la pa ida, acili ado como pa áme o, pa a decidi la
jugada a ealiza .
El es o de mé odos son mé odos opcionales que pe mi en i adap ando los a ibu os que se hayan
incluido según el desa ollo de la pa ida o de pa idas an e io es. El mé odo ini Hand se ejecu a al
p incipio de cada mano, y ecibe como pa áme o el es ado de la pa ida; el mé odo endHand se
ejecu a al inal ecibiendo ambién como pa áme o el es ado de la pa ida; el mé odo endGame se
ejecu a cuando acaba cada pa ida y ecibe como pa áme o una abla hash con los nomb es de los
jugado es asociados a los esul ados; el mé odo check se ejecu a cuando la mano es á a pun o de
acaba y de decidi se los ganado es de las apues as, y ecibe como pa áme o las ca as de la mesa,
y el mé odo onPlaye Command se ejecu a cada ez que un jugado decide su jugada y ecibe como
pa áme os el nomb e del jugado y la jugada que ha decidido.
Las clases plan illa a usa pa a la implemen ación de bo s son las clases Use S a egy1 y
Use S a egy2, en el paque e s a egies.
45
Mé odo main
El mé odo que ejecu a el sis ema de bo s es el mé odo main, en la clase Poke S a egies del paque e
poke s a egies. Es e mé odo se enca ga de o ece al es udian e dis in as opciones de ejecución de
la pa ida, y de lanza és a.
En p ime luga , se c ean dos a ays de ipo S ing pa a la elección de las es a egias que juga án. El
p ime jugado puede se un jugado humano o la es a egia Use S a egy1 c eada po el es udian e,
mien as que el segundo puede se la es a egia Use S a egy2 c eada po el es udian e, el bo
expe o ag esi o, el bo expe o conse ado o la es a egia alea o ia diseñada po Da id Pé ez,
incluidos odos ellos en el a chi o “.ja ”. Después se es ablece el icono pa a los cuad os de opciones
de JOp ionPane que se c ea án pos e io men e, y se es ablecen los alo es p ede e minados de
núme o de ondas a uno, modo de juego a VISUAL_GAME y es a egias de jugado es a null.
Una ez hecha la p epa ación, se o ece al es udian e, a a és de elemen os de JOp ionPane como
los ya desc i os en la es a egia de jugado , la posibilidad de elegi qué es a egias juga án la pa ida
y el núme o de ondas de la misma. Si el p ime jugado es un jugado humano, el modo de juego es
necesa iamen e VISUAL_GAME; si no, se o ece ambién la posibilidad de elegi el modo de juego.
También se o ece la posibilidad de es ablece el núme o de ichas de la ciega g ande y el núme o
de ichas iniciales de cada jugado (en e cinco y ein e eces el amaño de la ciega g ande).
Finalmen e, una ez es ablecidas odas las opciones según se desee, se ejecu a á con ellas el mé odo
un de la clase MainCon olle en el a chi o “.ja ”, ecogiendo los esul ados en una abla hash y
mos ándolos median e un cuad o de mensaje de los o ecidos po JOp ionPane. Es o pe mi e
lanza una g an can idad de ejecuciones del sis ema pa a pode obse a en g andes núme os cómo
de buenas son las es a egias diseñadas.
46
Apéndices
Apéndice A: código de la he amien a
jPoke Lea ningFun
El código de la he amien a p esen ada en el Bloque I puede encon a se en el eposi o io
jPoke Lea ningFun (h ps://gi hub.com/ incon-san i/jPoke Lea ningFun)
Apéndice B: código del sis ema de plan illas
El código del sis ema de plan illas p esen ado en el Bloque II puede encon a se en el eposi o io
jPoke S a egies (h ps://gi hub.com/ incon-san i/jPoke S a egies)
Apéndice C: código del a chi o “.ja ” usado en
el sis ema de plan illas
El código del a chi o “.ja ” usado en el sis ema de plan illas p esen ado en el Bloque II puede
encon a se en el eposi o io jPoke Mas e Ja (h ps://gi hub.com/ incon-san i/jPoke Mas e Ja )
47
Bibliog a ía
[1] P oyec o ‘jpoke ’, po Da id Pé ez Cab e a (13 no . 2017) [en línea]. A ailable:
h ps://gi hub.com/dpe ezcab e a/jpoke
[2] Clase ja a de ci ado, po A u o Tena (20 dic. 2017) [en línea]. A ailable:
h ps://gis .gi hub.com/a u o ena/9235042
[3] Guía Ne beans pa a p oyec os Ja a (25 ab . 2018) [en línea]. A ailable:
h ps://ne beans.o g/ ea u es/ja a/index.h ml
[4] Poke s a s School (30 ab . 2018) [en línea]. A ailable: h ps://www.poke s a sschool.es
[5] p oyec osagiles.o g (28 oc . 2018) [en línea]. A ailable: h ps://p oyec osagiles.o g
[6] P og amacion.ne (27 ab . 2018) [en línea]. A ailable: h ps://p og amacion.ne
[7] Web de Vladimi S anko ic (10 ene. 2018) [en línea]. A ailable: h p://www.s lada.com
[8] Pagina Medium de Chanaka Lakmal (12 ene. 2018) [en línea]. A ailable:
h ps://medium.com/@ldclakmal
[9] S ack O e low (3 may. 2018) [en línea]. A ailable: h ps://s acko e low.com
[10] Thomas Bakke , Analy ical No-Limi Hold’em. Las Vegas, Ne ada: Two Plus Two
Publishing LLC, 2010.
[11] Bill Chen y Je od Ankenman, The Ma hema ics O Poke , Pi sbu g: ConJeiCo LLC,
2006.
[12] Collin Moshman y Douglas Za e, The Ma h O Hold’em, Dulu h, Geo gia: Dima
En e p ises, Inc, 2011.
48