Llicència
Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència
Autors:
Pràctica Estructures iteratíves
Forma d'entrega
Si l'entrega no compleix les normes la pràctica no serà avaluada
- Usa el mateix projecte que l'usat als exercicis
- El package ha de ser cat.itb.elteuusuari(*).dam.m03.uf1.iterative.practice
- La classe de l'exercici ha de ser SetIMig
- Assegura't de mostrar els mateixos textos usats als exemples.
- Quan la vulguis entregar afegeix el tag "PracticaIterativa" a la versió(**).
- Assegura't de pujar el tag al git i que el projecte compili.
- Exporta el projecte en un zip i entrega'l al classroom
- Per exportar el projecte ves a File->Export->Project To Zip File
Sumari
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:
- Es donarà una carta aleatòria a l'usuari entre els valors 1,2,3,4,5,6,7,sota,cavall,rei
- Les cartes menors o iguals a 7 tenen el seu valor corresponent (1-7). Sota, cavall i rei tenen per valor 0.5.
- Es mostrarà a l'usuari la suma dels valors obtinguts fins ara.
- El programa demanarà a l'usuari si vol destapar una carta (0-> no vol carta, 1 -> sí que vol carta).
- L'usuari pot anar demanant cartes, però si el valor acumulat de les cartes demanades és superior a 7.5, ja no en pot demanar més i el programa informa a l'usuari que ha perdut.
- Si l'usuari no s'ha passat començarà el torn de l'ordinador.
- Aquest anirà agafant cartes aleatòries fins a que iguali el valor del jugador o és passi.
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.