Un ejercicio de práctica deliberado.
El ejercicio se puede utilizar para practicar técnicas de desarrollo de software, aprender nuevas tecnologías, encontrar nuevas formas de trabajar, etc.
Tradicionalmente, el juego se juega usando:
Una tabla de decodificación , con un escudo en un extremo que cubre una fila de cuatro agujeros grandes, y doce filas adicionales que contienen cuatro agujeros grandes junto a un conjunto de cuatro pequeños agujeros.
clavijas de código de seis colores diferentes, que se colocarán en los grandes agujeros del tablero
pequeñas clavijas de llave , algunas de color negro, algo blanco, que se colocarán en los pequeños agujeros en el tablero
Fuente: Wikipedia
En el juego de mente maestra convencional hay dos jugadores:
CodeMaker : elige un patrón de cuatro clavijas de código y las coloca en los cuatro agujeros cubiertos por el escudo. Este código secreto solo es visible para el modelo de código.
CodeBreaker : trata de adivinar el código secreto con doce turnos, tanto en orden como en color. Cada suposición se hace colocando una fila de clavijas en el tablero de decodificación. Una vez colocado, el CodeMaker proporciona retroalimentación colocando cero a cuatro clavijas clave en los pequeños agujeros de la fila con la suposición.
La retroalimentación se proporciona con clavijas clave:
Se coloca una clavija de llave negra para cada clavija de código de la suposición que es correcta tanto en color como en posición.
Se coloca una clavija de llave blanca para cada clavija de código de la suposición que es de color correcto pero en una posición incorrecta
Si hay colores duplicados en la suposición, solo se les puede otorgar una clavija clave si corresponden a la misma cantidad de colores duplicados en el código secreto
Las clavijas de la llave negra se colocan antes que las clavijas de la llave blanca
La gente es narradores. Por lo tanto, usar ejemplos para hablar sobre las reglas comerciales y documentarlas es una técnica muy poderosa para construir una comprensión compartida rápidamente.
Elegimos usar Gherkin ya que nos gusta su estructura, pero cualquier formato funcionaría igualmente bien.
Nota | Gherkin es un lenguaje de texto simple con una estructura simple. Los ejemplos que se muestran en los escenarios de Gherkin están destinados a ilustrar las reglas comerciales. Gherkin puede ser utilizado por los no programadores mientras está lo suficientemente estructurado como para permitir una descripción concisa de las reglas comerciales y su automatización. |
Feature : Playing mastermind
As a code breaker
I want to practice breaking codes
In order to have fun
Scenario : Joining the game
Given a decoding board of 12 attempts
And the code maker has placed a secret on the board
When I join the game
Then the game should be started with an empty board
And I should have 12 attempts available
Scenario Outline : Making a guess
Given a decoding board of 12 attempts
And the code maker placed the "<Pattern>" code pattern on the board
When I try to break the code with "<Guess>"
Then the code maker should give me "<Feedback>" feedback on my guess
Examples :
# Feedback legend:
# B - Black - Correct colour and position
# W - White - Correct colour but wrong position
| Pattern | Guess | Feedback |
| Red Green Blue Yellow | Red Purple Purple Purple | B |
| Red Green Blue Yellow | Purple Purple Purple Purple | |
| Red Green Blue Yellow | Purple Red Purple Purple | W |
| Red Green Blue Yellow | Red Purple Green Purple | B W |
| Red Green Blue Yellow | Red Green Blue Purple | B B B |
| Red Green Blue Yellow | Red Yellow Blue Green | B B W W |
| Red Green Blue Yellow | Yellow Blue Green Red | W W W W |
| Red Green Blue Yellow | Red Green Blue Yellow | B B B B |
| Red Green Blue Yellow | Red Red Red Purple | B |
| Green Red Blue Yellow | Green Yellow Red Blue | B W W W |
| Green Red Blue Yellow | Red Green Yellow Blue | W W W W |
| Green Red Blue Yellow | Green Red Yellow Blue | B B W W |
| Red Green Red Yellow | Red Red Purple Purple | B W |
| Red Red Red Yellow | Red Green Purple Purple | B |
| Red Red Blue Yellow | Purple Purple Red Purple | W |
| Red Blue Blue Yellow | Purple Purple Red Red | W |
Scenario : Winning a game
Given a decoding board of 12 attempts
And the code maker placed the "Red Green Blue Yellow" secret on the board
When I try to break the code with an invalid pattern 11 times
But I break the code in the final guess
Then I should win the game
And I should no longer be able to make guesses
Scenario : Losing a game
Given a decoding board of 12 attempts
And the code maker placed the "Red Green Blue Yellow" secret on the board
When I try to break the code with an invalid pattern 12 times
Then I should lose the game
And I should no longer be able to make guesses