Pràctica Estructures iteratíves

Forma d'entrega

Si l'entrega no compleix les normes la pràctica no serà avaluada

Sumari

  1. Pràctica Estructures iteratíves
    1. SetIMig
      1. Exemples de partides
        1. Exemple Usuari es passa
          1. Input
          2. Output
        2. Exemple usuari guanya
          1. Input
          2. Output
        3. Exemple usuari
          1. Input
          2. Output
      2. Sub-tasques
        1. getCardValue (1p)
        2. getCardText (1p)
        3. playComputerTurn (3p)
        4. playUserTurn (3p)
        5. Pas final (2p)
      3. ItbRandomizer
        1. Testing

SetIMig

Volem fer un programa que simuli una versió del joc de cartes set i mig per jugar en solitari contra l'ordinador. El joc funcionarà de la següent manera:

Exemples de partides

Exemple Usuari es passa

ItbRandomizer.setNextInts(2,3,3);
Input
1
1
Output
T'ha sortit la carta: 2
Resultat actual: 2.0
Vols seguir jugant?
T'ha sortit la carta: 3
Resultat actual: 5.0
Vols seguir jugant?
T'ha sortit la carta: 3
T'has passat.

Exemple usuari guanya

ItbRandomizer.setNextInts(10,6,1,5,5);
Input
1
1
0
Output
T'ha sortit la carta: rei
Resultat actual: 0.5
Vols seguir jugant?
T'ha sortit la carta: 6
Resultat actual: 6.5
Vols seguir jugant?
T'ha sortit la carta: 1
Resultat actual: 7.5
Vols seguir jugant?
El teu resultat és: 7.5
L'ordinador ha tret un: 5
L'ordinador ha tret un: 5
L'ordinador s'ha passat
Has guanyat!!!

Exemple usuari

ItbRandomizer.setNextInts(6,10,6);
Input
0
Output
T'ha sortit la carta: 6
Resultat actual: 6.0
Vols seguir jugant?
El teu resultat és: 6.0
L'ordinador ha tret un: rei
L'ordinador ha tret un: 6
El resultat de l'ordinador és: 6.5
Guanya la banca

Sub-tasques

Per tal de construïr la solució dividirem el programa en 4 sub-tàsques.

getCardValue (1p)

Implementa la funció getCardValue següent:

/**
 * Given the number of a card, it returns the value in a 7iMig game. 8, 9 and 10 represents jack, horse,
 * king respectively.
 * @param card between 1 and 10
 * @return value of the gien card.
 */
public static double getCardValue(int card)

getCardText (1p)

Implementa la funció getCardText següent:

/**
 * Given the number of a card, it returns the name of the card. 8, 9 and 10 represents jack (sota), horse (cavall),
 * king (rei) respectively.
 * @param card between 1 and 10
 * @return name of the given card.
 */
public static String getCardText(int card)

playComputerTurn (3p)

Implementa la funció playComputerTurn. Donada una puntuació de l'usuari calcula la tirada de l'ordinador (i printa per pantalla els diferents missatges).

/**
* Plays the computer turn.
* @param userCounter user turn result. The computer will try to obtain at least the same value.
* @return result of the sum of the computer cards value (even if greater than 7.5)
*/
public static double playComputerTurn(double userCounter) 

playUserTurn (3p)

Implementa la funció playUserTurn. Executa la tirada del usuari (mostrant els diferents missatges) i retorna el resultat.

/**
 * Plays the user turn.
 *
 * @return result of the sum of the user cards value (even if greater than 7.5)
 */
public static double playUserTurn() 

Pas final (2p)

Ajunta-ho tot al main per a que funcioni el joc complert.

ItbRandomizer

Per tal de determinar la següent carta aleatòria usarem un mètode especial (no usarem el Math.random()).

Per tal d'utilitzar-lo, copia el següent fitxer en el package:
ItbRandomizer.java

Per obtenir un enter aleatòri entre el 1 i el 99 usa:

int randomValue = ItbRandomizer.nextInt(1,100);

Testing

Per fer proves del vostre programa, si voleu probar uns valors concrets, podeu usar el següent mètode, i els valors aleatòris seran 5, 8, 5 i 4:

public static void main(String[] args) {
  ItbRandomizer.setNextInts(5,8,5,4);
  // ...
}

Ens els exemples també podràs veure els enters no aleatòris utilitzats.