Adivina el número aleatorio

    ¿Qué queremos construir?

    Queremos crear un pequeño juego. El juego consiste en que un jugador intente adivinar un número aleatorio en tres intentos. 

    En cada intento el juego debe notificar al usuario si el número correcto es mayor o menor. Si adivina el número correctamente, entonces el jugador gana, si no, pierde.

    ¿Qué intentamos practicar con esta kata?

     Esta kata está pensada para trabajar en test doubles, pero también se puede resolver sin ellos. Además, es un ejercicio excelente para trabajar la primitive obsession y los baby steps.

    Reglas de juego

    • El usuario empieza a jugar, el juego genera un número aleatorio que no debe cambiar hasta que termine la partida.
    • Si el usuario acierta el número, el jugador gana.
    • Si el usuario no adivina el número, el sistema tendrá que notificar al usuario si el número es mayor o menor.
    • Si el usuario no acierta el número en tres intentos perderá.

    Casos prácticos

    El jugador gana en la primera jugada

    Empieza el juego
    Primer intento con el número 5
    El jugador gana la partida
    Estado inicial El jugador gana en la primera jugada
    Initial state Player won on the first Intent

     

    El jugador no gana en el primer intento

    Empieza el juego
    Primer intento con el número 10
    Segundo intento con el número 3
    Tercer intento con el número 5
    El jugador gana la partida

     

    Estado inicial Primer intento  Segundo intento  Tercer intento 
    Initial state Player first move not guesses the number Player fails on second intent Player wins on last intent

     

    The player loses the game

    Empieza el juego
    Primer intento con el número 10
    Segundo intento con el número 3
    Tercer intento con el número 5
    El jugador pierde la partida

     

    Estado inicial Primer intento Segundo intento Tercer intento
    Initial state Player first move not guesses the number Player second move number higher Player fails on the last intent and loses the game

     

    Posible API de la clase

    public class GuessingNumberGame {
    GuessingNumberGame(RandomNumberGenerator generator){}
    public String guessNumber(int guessedNumber) {}
    }

    ¿Qué puedo practicar con este kata?

    • Trabajar con colaboradores 
    • Baby steps
    • Object Calisthenics
    • Test doubles