Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Primera Prueba #2

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 41 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -4,8 +4,6 @@

### Desarrollo Dirigido por Pruebas + DIP + DI

Para este taller se va a trabajar sobre el juego del ahorcado.

El sistema actual de puntuación del juego comienza en 100 puntos y va
descontando 10 puntos cada vez que se propone una letra incorrecta.

@@ -18,11 +16,17 @@ puntuación, los cuales se describen a continuación:
* Se penaliza con 10 puntos con cada letra incorrecta.
* El puntaje minimo es 0.

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/c5e5545b-4cb3-494f-beda-375a2fb82247)


* BonusScore:
* El juego inicia en 0 puntos.
* Se bonifica con 10 puntos cada letra correcta.
* Se penaliza con 5 puntos cada letra incorrecta.
* El puntaje mínimo es 0

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/594577d2-6bb4-4e7a-b519-24178e03b57a)


* PowerBonusScore:
* El juego inicia en 0 puntos.
@@ -32,60 +36,67 @@ puntuación, los cuales se describen a continuación:
* Si con las reglas anteriores sobrepasa 500 puntos, el puntaje es
500.

Lo anterior, se traduce en el siguiente modelo, donde se aplica el
principio de inversión de dependencias:

![imagen](img/model.png)
![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/c65fdd78-3d07-44bc-ab59-835b53e403ad)

### Parte I

1. Haga un fork del proyecto (no lo descargue directamente!).

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/920d4dbb-2a91-45fd-b4b4-f0a270cc64e2)


2. A partir del código existente, implemente sólo los cascarones del
modelo antes indicado.

3. Haga la especificación de los métodos calculateScore (de las tres
4. Haga la especificación de los métodos calculateScore (de las tres
variantes de GameScore), a partir de las especificaciones
generales dadas anteriormente. Recuerde tener en cuenta: @pre,
@pos, @param, @throws.

4. Haga commit de lo realizado hasta ahora. Desde la terminal:
5. Haga commit de lo realizado hasta ahora. Desde la terminal:

```sh
git add .
git commit -m "especificación métodos"
```

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/0382f902-0645-48bd-907e-25f32c352681)

5. Actualice el archivo `pom.xml` e incluya las dependencias para la ultima versión de JUnit.

6. Teniendo en cuenta dichas especificaciones, en la clase donde se
6. Actualice el archivo `pom.xml` e incluya las dependencias para la ultima versión de JUnit.

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/1d874d1e-f054-4a9a-b9c0-f501f15e0e85)


7. Teniendo en cuenta dichas especificaciones, en la clase donde se
implementarán las pruebas (GameScoreTest), en los
comentarios iniciales, especifique las clases de equivalencia para
las tres variantes de GameScore, e identifique
condiciones de frontera.

7. Para cada clase de equivalencia y condición de frontera, implemente
9. Para cada clase de equivalencia y condición de frontera, implemente
una prueba utilizando JUnit.

8. Haga commit de lo realizado hasta ahora. Desde la terminal:
10. Haga commit de lo realizado hasta ahora. Desde la terminal:

```sh
git add .
git commit -m "implementación pruebas"
```

9. Realice la implementación de los 'cascarones' realizados anteriormente.
11. Realice la implementación de los 'cascarones' realizados anteriormente.
Asegúrese que todas las pruebas unitarias creadas en los puntos anteriores
se ejecutan satisfactoriamente.

10. Al finalizar haga un nuevo commit:
12. Al finalizar haga un nuevo commit:

```sh
git add .
git commit -m "implementación del modelo"
```

11. Para sincronizar el avance en el respositorio y NO PERDER el trabajo, use
13. Para sincronizar el avance en el respositorio y NO PERDER el trabajo, use
el comando de GIT para enviar los cambios:

```sh
@@ -94,13 +105,22 @@ principio de inversión de dependencias:

### Parte II

Actualmente se utiliza el patrón FactoryMethod
que desacopla la creación de los objetos para diseñar un juego
de ahorcado (revisar setup.factoryMethod, el
constructor de la clase GUI y HangmanFactoryMethod).

1. Utilizando el HangmanFactoryMethod (MétodoFabrica) incluya el
OriginalScore a la configuración.

En la siguiente imagen se muestra dentro de la clase HangmanDefaultFactoryMethod que esta configurado con originalScore como el modo de juego actual.

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/c0741799-e887-4fe6-a56c-c5a11cf3dc21)

Se puede ver que al momento de correr el juego este inicia el juego en 100 y después de haber fallado una vez queda el puntaje en 90

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/196fef5b-21e3-424e-b82b-b0c428a50149)

Ahora vamos a configurar el juego como bonusScore

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/f4d43f20-53a7-486a-a125-db9e9ce5345f)

Después de jugar un rato vemos que el puntaje se redujo 5 puntos por cada palabra incorrecta e incremento 10 por cada acierto.

![image](https://github.com/Knight072/DependencyInjectionHangman/assets/116401447/18fc6ebc-a023-4bef-91bf-da1cce07039d)