Diferencia entre revisiones de «Tutorial:Listas, Secuencias y Guiones para Jugar»
(try) |
|||
(No se muestran 2 ediciones intermedias de 2 usuarios) | |||
Línea 18: | Línea 18: | ||
<h4>Ilustrando las Piezas</h4> | <h4>Ilustrando las Piezas</h4> | ||
*Los '''''n''''' ''palillos'' que componen el juego aparecen dispuestos en el centro de la pantalla. Son los segmentos creados por:<br> | *Los '''''n''''' ''palillos'' que componen el juego aparecen dispuestos en el centro de la pantalla. Son los segmentos creados por:<br> | ||
− | **'''<code>listaBanca = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[ | + | **'''<code>listaBanca = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[Comentarios:Comando_Segmento#Ejemplos_y_Variantes|Segmento]]'''('''(i / 2, -2), (i / 2, 2)), i, 1, n)</code>''' |
*Las '''''n1''''' varillas que toma el ''equipo vía GG'' aparecen horizontalmente en la zona superior de la pantalla. | *Las '''''n1''''' varillas que toma el ''equipo vía GG'' aparecen horizontalmente en la zona superior de la pantalla. | ||
− | **'''<code>Mi_lista = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[ | + | **'''<code>Mi_lista = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[Comentarios:Comando_Segmento#Ejemplos_y_Variantes|Segmento]]'''('''(5floor((i - 1) / 5), 4 - [[Comando Resto|Resto]]'''('''i - 1, 5) / 5), (5floor((i - 1) / 5) + 4, 4 - [[Comando Resto|Resto]]'''('''i - 1, 5) / 5)), i, 1, n1)</code>''' |
*Las '''''n2''''' varillas que toma quien juega se distribuyen horizontalmente en la zona inferior de la pantalla, en ''montones de a 5'':<br> | *Las '''''n2''''' varillas que toma quien juega se distribuyen horizontalmente en la zona inferior de la pantalla, en ''montones de a 5'':<br> | ||
− | **'''<code>listaJugador = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[ | + | **'''<code>listaJugador = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''[[Comentarios:Comando_Segmento#Ejemplos_y_Variantes|Segmento]]'''('''(5floor ((i-1) / 5), -3,5 + [[Comando Resto|Resto]]'''('''i-1, 5 ) / 5), (5floor ((i-1) / 5) + 4, -3,5 + [[Comando Resto|Resto]](i - 1, 5) / 5)), i, 1, n2''')'''</code> |
*Los palillos situados en la zona superior de la pantalla, indican lo que ha retirado el ''equipo GG'': en ''montones de a cinco''<br> | *Los palillos situados en la zona superior de la pantalla, indican lo que ha retirado el ''equipo GG'': en ''montones de a cinco''<br> | ||
**'''<code>listaSóloMía = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''(i / 2, 2.2), i, n, n - prisoyo + 1, -1''')'''</code>''' | **'''<code>listaSóloMía = [[Tutorial:Visibilidad_Condicional_y_Secuencias#Introducción_a_Secuencias|Secuencia]]'''('''(i / 2, 2.2), i, n, n - prisoyo + 1, -1''')'''</code>''' |
Revisión actual del 21:38 12 ago 2020
Plantilla:Tutoriales
Jugando al Nim
Plantilla:Interfaz
El siguiente applet permite jugar al Nim en un ambiente dinámico preparado en base a listas, secuencias y guiones articulados adecuadamente, tal como puede apreciarse en la aplicación que aparece más adelanteO aquí... en francés
La estrategia ganadora puede descubrirse o encontrarse en uno de los tantos enlaces descriptivos del juego, en el que pierde quien no tiene más remedio que tomar la última pieza de las que, por turno, se pueden quitar de una a tres por vez.
Tendiendo las Piezas del Juego
Para tender las piezas del juego:
- Crear algunos deslizadores enteros y ajustables como el que establecerá...
- si será primero el equipo que opera automáticamente a través del applet o quien humanamente juegue, es decidido al azar
- de 6 a 21, el número de piezas denominado N es decidida aleatoriamente
- el número de piezas, de 0 a 3, que toma el equipo que opera automáticamente a través del applet de GG, llamado n_1
- el número de piezas tomadas por el jugador, de 0 a 3, n_2
- el número de palillos que se han tomado y que se ilustran cruzados
Ilustrando las Piezas
- Los n palillos que componen el juego aparecen dispuestos en el centro de la pantalla. Son los segmentos creados por:
- Las n1 varillas que toma el equipo vía GG aparecen horizontalmente en la zona superior de la pantalla.
- Las n2 varillas que toma quien juega se distribuyen horizontalmente en la zona inferior de la pantalla, en montones de a 5:
- Los palillos situados en la zona superior de la pantalla, indican lo que ha retirado el equipo GG: en montones de a cinco
listaSóloMía = Secuencia((i / 2, 2.2), i, n, n - prisoyo + 1, -1)
- Los palillos situados en la zona inferior de la pantalla, indican lo que ha retirado el jugador:
listaSóloJugador = Secuencia((i / 2, -2.2), i, n, n - priesjugador + 1, -1)
Aplicación Interactiva
Acaso sea importante ensayar estrategias sobre el escenario interactivo del applet antes de seguir adelante con la descripción de variables, botones y guiones.
Variables a Definir
jugador = AleatorioEntre(0, 1)
es un entero que indica si es mano el equipo GG, cuando el valor es 0, o el que humanamente juega cuando es 1.msg
es el valor booleano que indica que el equipo GG ya ha calculado su jugada y por lo tanto pasa a mostrarse el botón de OK para concretarla con acuerdo de su contrincante.ajugador = Si(restan ≟ 1, Mínimo(AleatorioEntre(1, 3), n), Si(restan ≟ 0, 3, restan - 1))
es el entero que calcula, basándose en el número de palillos aún disponibles, qué cantidad de piezas debe tomar el equipo GGrestan = Resto(n, 4)
entero que establece el resto respecto de 4 de los n palillos en juegojuegoganado = jugador ≟ 0 ∧ n ≟ 1
booleana que establece si es cierto que el juego se ha ganadojuegoperdido = jugador ≟ 1 ∧ n ≟ 1
booleana que establece si es cierto que el juego se ha perdidoterminado = juegoganado ∨ juegoperdido
variable booleana que indica si el juego, ganado o perdido, se ha terminado.
Interacción en Juego
Es preciso prever los siguientes botones:
- uno para dar inicio a una Nueva Partida que desencadene este guion:
Valor(n,AleatorioEntre(6,21)) n1=0 n2=0 Valor(priesjugador,ajugador) priesjugador=0 jugador=AleatorioEntre(0,1) Valor(msg,Si(jugador==0,true,false))
- Como se aprecia, echa a la suerte la cantidad de palillos dado que n tendrá un valor entre 6 y 21 y pone a cero los valores de n1 y de n2. También establece, aleatoriamente, quién será mano
- Notas:
Se ha anotado...Valor(n, AleatorioEntre(6,21) )
y no...n=AleatorioEntre(6,21)
... porque en este último caso se estaría cambiando la definición misma del objeto n inicialmente un número libre a uno limitado por la definición. Incluso cada vez que se pulsara F9 a lo largo de la partida, cambiaría el valor de n
La primera variante, en cambio, solo se modifica el valor de n en tanto se lo conserva como objeto libre.
- uno para establecer en un guion - script - 'al clic' sobre la lista de palillos, cuántos seleccionará quien disputa el juego
- uno que permite aceptar al pulsar en OK que el equipo GG tome la cantidad de palillos que ha calculado conveniente o determinado aleatoriamente. Desencadenará el siguiente guion:
n=n-prisoyo n1=n1+prisoyo jugador=1 priesjugador=0
:Como puede apreciarse, disminuye en número n de palillos disponibles según los que se hayan tomado e incrementa, en la misma medida, los que se van amontonando
- uno para mostrar la cantidad de palillos restantes tras cada jugada
- uno para establecer la cantidad de palillos disponibles aún.
Puntos de cada Jugada
Con cada clic sobre la hilera de palillos disponibles, quien juega puede establecer la cantidad que va a tomar, entre 1 y 3 a partir del siguiente guion:
clic=!clic priesjugador=Resto(priesjugador+1,4)
:Como se aprecia, si se superan las tres pulsaciones o clic, el contador de palillos a tomar se reinicia de modo que no se pueda contar más que hasta 3.
Cuando sea el turno del equipo GG, serán visibles los puntos que señalarán el número de palillos que tomará este contrincante que opera según la siguiente formulación:listaSóloJugador = Secuencia((i / 2, -2.2), i, n, n - priesjugador + 1, -1)
Lo que será mostrado bajo la correspondiente condición de visibilidad;jugador ≟ 1 ∧ (priesjugador > 0)
... teniendo en cuenta que lo que da valor a priesjugador es determinado por el guion asociado a la hilera de palillos disponibles que se formula así:
clic=!clic priesjugador=Resto(priesjugador+1,4)
Señalética Sincronizada
Cada uno de los textos que se exponen a lo largo de la partida estará sincronizado de modo tal que las condiciones de visibilidad sean las propicias. Así, la condición de:
Turno de quien Juega será...
jugador ≟ 1 ∧ (¬terminado)
A su vez, la condición de:
Tomando ajugador será...
jugador ≟ 0 ∧ msg ∧ (¬terminado)
Finalmente, la condición de:
¡Partida Ganada! será...
juegoganado y viceversa, la de:
Partida Perdida será...
juegoperdido
Fin de la Partida
Detectar el final de cada partida es relativamente sencillo. Se termina cuando se ha ganado o perdido:
juegoganado ∨ juegoperdido
Se ha ganado si se verifica la siguiente condición:
jugador ≟ 0 ∧ n ≟ 1 y viceversa, cuando:
jugador ≟ 1 ∧ n ≟ 1
Ambos finales son un buen principio para una Nueva Partida.