Ver la Versión Completa : [ IDEA ] Juego Mastermind
GraphicAdventure
11/07/18, 14:05:14
¿Qué tal si lo creamos con Tasker?
Willy, ya tienes algo para entretenerte. :risitas:
GraphicAdventure
11/07/18, 15:41:09
Para este proyecto creo que con escenas queda mejor.
Opciones:
- Jugadores (1/2)
- Cantidad de números/colores
- Cantidad de intentos
- Mostrar código y reiniciar
- Salir
WillyWeb
11/07/18, 20:41:57
Willy, ya tienes algo para entretenerte. :risitas:
:oskitar:
Que el que se aburre es GraphicAdventure (https://www.htcmania.com/showthread.php?p=29065858#post29065858). :silbando:
Cuando era más pequeño X-D tenía uno como este ...
1111144
El que quiera aprender...
https://www.aboutespanol.com/aprende-a-jugar-mastermind-paso-a-paso-2077618
Y el que quiera jugar...
https://www.psicoactiva.com/juegos-inteligencia/mastermind/
Vamos chavales. Que esto es aplicación de lógica pura y dura.
:palomitas:
GraphicAdventure
13/07/18, 19:09:27
El finde a ver si me pongo a ello.
Nunca usé escenas y no sé si voy a tener paciencia para aprender a manejarlas ahora solo para esto.
De momento voy a tratar solo del funcionamiento.
WillyWeb
13/07/18, 19:21:23
:aplausos:
Me pillas en unas fechas muy malas, pero procuraré estar al quite.
De momento podemos empezar por definir las premisas iniciales...
-Dos jugadores (hombre y máquina)
-La máquina inicia partida y el hombre adivina
-Cuatro colores ocultos de entre seis
-Diez intentos máximo
Vamos, de este estilo...
https://www.psicoactiva.com/juegos-inteligencia/mastermind/
De momento sin florituras visuales. Solamente la parte lógica. :pensando:
GraphicAdventure
21/07/18, 14:05:12
Esta mañana me puse a mirar un poco esto.
Para la cantidad de colores permito letras en el intervalo a-j.
Para detectar los aciertos hice lo que se haría programando de pasar tres bucles. Es la versión corta pero un tiempo de ejecución alto.
Después pensé en otra estrategia más larga pero más eficiente solo con un bucle, cambiando la letra a mayúscula si acierta. Pero me deparé con un problema, el buscador de índices de un array (#?) no hace distinción entre mayúsculas y minúsculas.
Puedo rodear el problema poniendo un if con 3 elseif sin aumentar la ejecución pero no es lo más elegante.
¿Sabéis dónde puedo sugerir a João que incorpore una opción para ignorar mayúsculas/minúsculas con (#?) en arrays?
WillyWeb
21/07/18, 14:10:02
.¿Sabéis dónde puedo sugerir a João que incorpore una opción para ignorar mayúsculas/minúsculas con (#?) en arrays?
https://tasker.helprace.com
Y supongo que también en el foro oficial.
GraphicAdventure
21/07/18, 16:08:46
Hice la solicitud.
Voy a seguir con la tarea con el parche a ver si João implementa esto.
GraphicAdventure
23/07/18, 14:20:38
Me acordé que poniendo mayúsculas se vuelve case sensitive.
Puse el array en mayúsculas y convierto en minúsculas. Problema resuelto.
Cuando llegue pongo la tarea a ver si la pasamos a modo gráfico porque no creé ni una escena.
Willy, ¿sabes manejarlas?
WillyWeb
23/07/18, 14:26:57
Willy, ¿sabes manejarlas?
No son mi entretenimiento favorito, pero me defiendo. ;-)
GraphicAdventure
23/07/18, 16:46:41
Para establecer el número de intentos (10) y colores (10) hay que modificar la tarea pero ya tenemos para empezar. Cada letra corresponderá a un color.
Si encuentra un color, convierte la letra del código secreto (%codigo) en minúscula para no volver a encontrarla.
Si una blanca se cuenta erróneamente en el lugar de una negra, al llegar a la posición de esa negra verifica si hay más letras iguales. Si no hay se resta la blanca, si hay se cambia a minúscula la primera que encuentre.
Si hay algún fallo en el razonamiento, no lo veo. Debería funcionar.
Probé con el otro método de 3 bucles y con este es más rápido apesar de mucho más acciones.
A9/28: Bucle de negras y blancas
A10/20: Negras
A21/27: Blancas
El '~' en A10 es para permitir coincidencia de mayúsculas con minúsculas.
El 'ig' en A11 es para distinguir mayúsculas de minúsculas.
En A16/17 corrige si una blanca se contó en lugar de una negra.
Tarea: Mastermind
A1: Array Set [ Matriz de Variables (array):%codigocopia Values:A,B,C,D,E,F,G,H,I,J,A,B,C,D,E,F,G,H,I,J,A,B ,C,D,E,F,G,H,I,J,A,B,C,D,E,F,G,H,I,J Separador:, ]
A2: Procesar Array [ Matriz de Variables (array):%codigocopia Tipo:Barajar ]
<probar>
A3: Array Set [ Matriz de Variables (array):%codigo Values:%codigocopia(1:4) Separador:, ]
A4: Consulta de Variable [ Título:4 letras entre A-J %codigocopia1%codigocopia2%codigocopia3%codigocopi a4 negras %negras blancas %blancas intentos %intentos Variable:%probar Tipo de entrada:Mayúsc / Todo Por Defecto: Imagen de fondo: Disposición:Variable Query Cuenta atrás (segundos):600 Mostrar sobre bloqueo pantalla:Apagado ]
A5: Buscar y Reemplazar Contenido de Variable [ Variable:%probar Buscar:\w Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En:%probar Reemplazar Coincidencias:Apagado Reemplazar Con: ]
A6: Sumar a variable [ Nombre:%intentos Valor:1 Módulo (wrap around):0 ]
A7: Establecer variable [ Nombre:%negras A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A8: Establecer variable [ Nombre:%blancas A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A9: For [ Variable:%posicion Ítems:1:4 ]
A10: Si (if) [ %probar(%posicion) ~ %codigo(%posicion) ]
A11: Si (if) [ %probar(%posicion) ig %codigo(%posicion) ]
A12: Convertir Variable [ Nombre:%codigo(%posicion) Función:A Minúsculas Almacenar Resultado en: ]
A13: Else
A14: Establecer variable [ Nombre:%posicion_contenido A:%probar(%posicion) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A15: Array Set [ Matriz de Variables (array):%indices_blancas Values:%codigo(#?%posicion_contenido) Separador:, ]
A16: Restar de variable [ Nombre:%blancas Valor:1 Módulo (wrap around):0 ] Si (if) [ %indices_blancas1 < 1 ]
A17: Convertir Variable [ Nombre:%codigo(%indices_blancas1) Función:A Minúsculas Almacenar Resultado en: ] Si (if) [ %indices_blancas1 > 0 ]
A18: Array Clear [ Matriz de Variables (array):%indices_blancas ]
A19: Fin si (End if)
A20: Sumar a variable [ Nombre:%negras Valor:1 Módulo (wrap around):0 ]
A21: Else Si (if) [ %codigo() ~ *%probar(%posicion)* ]
A22: Establecer variable [ Nombre:%posicion_contenido A:%probar(%posicion) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A23: Array Set [ Matriz de Variables (array):%indices_blancas Values:%codigo(#?%posicion_contenido) Separador:, ]
A24: Convertir Variable [ Nombre:%codigo(%indices_blancas1) Función:A Minúsculas Almacenar Resultado en: ]
A25: Array Clear [ Matriz de Variables (array):%indices_blancas ]
A26: Sumar a variable [ Nombre:%blancas Valor:1 Módulo (wrap around):0 ]
A27: Fin si (End if)
A28: End For
A29: Esperar [ MS:0 Segundos:1 Minutos:0 Horas:0 Días:0 ]
A30: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:probar ] Si (if) [ %intentos < 10 & %negras < 4 ]
A31: Flash [ Texto:Exito Largo:Apagado ] Si (if) [ %negras ig 4 ]
A32: Flash [ Texto:Fracaso Largo:Apagado ] Si (if) [ %negras nig 4 ]
GraphicAdventure
25/07/18, 22:15:32
Vaya santa paciencia para manejar escenas.
Estuve demasiado tiempo solo para hacer esto. No sé ni por dónde tirar.
Además, ¿alguna forma de que la resolución se adapte a otros dispositivos?
GraphicAdventure
26/07/18, 09:21:13
¿Alguna forma de crear los círculos grises que faltan con un bucle?
No tengo idea cómo interactúan las escenas y hay que hacer que los elementos reaccionen con la tarea.
WillyWeb
26/07/18, 11:09:59
Además, ¿alguna forma de que la resolución se adapte a otros dispositivos?
Ufff. Esa es una de las carencias más importantes que tiene el sistema de escenas de Tasker.
¿Alguna forma de crear los círculos grises que faltan con un bucle?
No tengo idea cómo interactúan las escenas y hay que hacer que los elementos reaccionen con la tarea.
Tienes la acción "Crear Elemento" que se podría usar dentro de un bucle, pero la documentación advierte que en esos elementos creados de forma dinámica "todavía" no es posible asignar una tarea a un evento (clic, clic largo, etc.) así que el tema de la interacción se complica un poco.
Algo que te podría ayudar a "rodear" las dificultades que te estás encontrando es usar un elemento VistaWeb y construir toda la escena con HTML+JS. :pensando:
GraphicAdventure
27/07/18, 10:32:49
Mi idea es que en una escena detecte automáticamente el nombre del elemento en foco a través de cambio de variables (¿posible?) y si es gris, cambiarle el color al elegido de la lista.
Así podría crearlos (con/sin bucle) sin necesidad de interacción.
Si tengo que asignar una acción a los 40 grises ya es para echar a correr.
Para HTML conviene que el contenido esté en el móvil y no en internet.
Verás, no quiero perder mucho tiempo con lo visual.
No aprobé artes plásticas.
Ya veré qué hago.
WillyWeb
27/07/18, 18:35:34
Para HTML conviene que el contenido esté en el móvil y no en internet.
No hace falta poner nada online. Puedes construir la escena enteramente con HTML+JS en local. Mira las posibilidades del elemento VistaWeb.
Verás, no quiero perder mucho tiempo con lo visual.
Pues esa es la parte que, casi siempre, lleva más tiempo. :silbando:
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.