<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Proves d'objectes <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Persona Implementa la classe `Persona` amb els següents atributs: - `String` Nom - `String` Cognoms - `int` Edat - `int` Altura (cm) - `double `Pes (kg) Implementa els mètodes: - Getters i setters. - `String nomComplet()`: Retorna el cognom i el nom separats per una coma. ``` Cognom, Nom ``` - `void aniversari()`: Augmenta el 1 l'edat. - `boolean esMajorEdat()`: Retorna `true` si la persona té 18 anys o més; `false` en qualsevol altre cas. - `double imc()`: Retorna l'[Índex de Massa Corporal (IMC)](https://ca.wikipedia.org/wiki/%C3%8Dndex_de_massa_corporal) de la persona. ## Producte i LlistaCompra ### Product Implementa la classe `Producte` amb els següents atributs: - `String` Nom - `double` Preu - `int` Unitats Implementa els mètodes: - Getters i setters. - `String toString()`: Retorna una cadena amb el nom i el preu del producte. ``` ÂNom: Preu ``` ### LlistaCompra Implementa la classe `LlistaCompra` amb els següents atributs: - `String` Nom - `List<Producte>` Productes Implementa els mètodes: - Getters i setters. - `void afegirProducte(Producte producte)`: Afegeix un producte a la llista. - `double total()`: Retorna el preu total de la llista de la compra. ### Proves Implementa les proves de les classes `Producte` i `LlistaCompra`. ## TicTacToe ### TicTacToeMoviment Implementa la classe `TicTacToeMoviment` amb els següents atributs: - `int` fila: Fila del tauler on es vol posar la fitxa. - `int` columna: Columna del tauler on es vol posar la fitxa. - `int` jugador: Jugador que fa el moviment. Implementa els següents mètodes: - Getters i setters. ### TicTacToeTauler Implementa la classe `TicTacToeTauler` amb els següents atributs: - `int[][]` tauler: Tauler de 3x3 on es guardaran les fitxes del joc. - __0__: casella buida - __1__: fitxa del jugador 1 - __2__: fitxa del jugador 2 - `TicTacToeMoviment` ultimaJugada: Últim moviment que s'ha fet. - `int` __nombreJugades__: Nombre de jugades que s'han fet. - `int` __guanyador__: Jugador que ha guanyat la partida. - `boolean` __acabat__: Indica si la partida ha acabat. Implementa el constructor `TicTacToeTauler()` que inicialitza el tauler a 0 i els altres atributs a valors per defecte. Implementa els següents mètodes: - Getters i setters. - `boolean esMovimentValid(TicTacToeMoviment moviment)`: Retorna `true` si el moviment és vàlid; `false` en qualsevol altre cas. Un moviment és vàlid si la posició (fila, columna) éstà dins del tauler i la posició indicada no està ocupada per un altra fitxa. - `void actualitzaTauler(TicTacToeMoviment moviment)`: Actualitza el tauler amb el moviment que s'ha fet. - `void render()`: Mostra el tauler per pantalla en el següent format: ``` ------------- | | 1 | | ------------- | | 2 | | ------------- | 2 | 1 | | ------------- ``` - `void comprovaAcabada()`: Comprova si la partida ha acabat i comprova si hi ha un guanyador. Aquest mètode comprova si s'ha aconseguit un 3 en ratlla en alguna de les direccions possibles utilitzant els següents mètodes privats: - `private boolean comprovaFila()`: Comprova si hi ha un 3 en ratlla a la fila de l'últim moviment. - `private boolean comprovaColumna()`: Comprova si hi ha un 3 en ratlla a la columna de l'últim moviment. - `private boolean comprovaDiagonal()`: Comprova si hi ha un 3 en ratlla a la diagonal de l'últim moviment. - `private boolean comprovaDiagonalInversa()`: Comprova si hi ha un 3 en ratlla a la diagonal inversa de l'últim moviment. També comprova si s'han fet 9 jugades i no hi ha guanyador, en aquest cas la partida acaba en empat.