Diferență între revizuiri ale paginii „POO Tema 1”

De la WikiLabs
Jump to navigationJump to search
(Pagină nouă: Realizați o implementare simplă a jocului "Spânzurătoarea". = Cerințe = Implementați o clasă, numită <code style="color: green">seriaf.poo.tema1.engine.implementation.Han...)
 
Linia 12: Linia 12:
 
* Jocul nu trebuie să facă diferențe între literele mici și mari.
 
* Jocul nu trebuie să facă diferențe între literele mici și mari.
  
−
Se dau următoarele clase, ce trebuie folosite fără a fi modificate
+
Se dau următoarele clase, ce trebuie folosite fără a fi modificate:
−
 
+
* [[Fișier:Main.java]]
−
<syntaxhighlight lang="Java">
+
* [[Fișier:Hangman.java]]
−
package seriaf.poo.tema1;
+
* [[Fișier:GameState.java]]
−
 
 
−
import java.io.Console;
 
−
import seriaf.poo.tema1.engine.GameState;
 
−
import seriaf.poo.tema1.engine.Hangman;
 
−
import seriaf.poo.tema1.engine.implementation.HangmanImpl;
 
−
 
 
−
/**
 
−
* Hangman Main class.
 
−
*/
 
−
public class Main {
 
−
 
 
−
    /**
 
−
    * Application entry point.
 
−
    *
 
−
    * @param args unused.
 
−
    */
 
−
    public static void main(String[] args) {
 
−
        Console console = System.console();
 
−
        console.printf("Introduceti cuvantul: ");
 
−
 
 
−
        char[] text = console.readPassword();
 
−
        String word = new String(text);
 
−
 
 
−
        try {
 
−
            Hangman hangman = new HangmanImpl(word, word.length());
 
−
            GameState state = hangman.getGameState();
 
−
            do {
 
−
                try {
 
−
                    console.printf("Litera: ");
 
−
                    state = hangman.makeMove(console.readLine().charAt(0));
 
−
                    console.printf(state.toString());
 
−
                } catch (IllegalArgumentException ex) {
 
−
                    console.printf("Eroare: %s\n", ex.getMessage());
 
−
                }
 
−
            } while (!state.isMatchWon() && state.getLivesLeft() != 0);
 
−
        } catch (IllegalArgumentException ex) {
 
−
            console.printf("Eroare: %s\n", ex.getMessage());
 
−
        }
 
−
    }
 
−
}
 
−
 
 
−
</syntaxhighlight>
 

Versiunea de la data 7 noiembrie 2015 19:13

Realizați o implementare simplă a jocului "Spânzurătoarea".

Cerințe

Implementați o clasă, numită seriaf.poo.tema1.engine.implementation.HangmanImpl (atenție la numele pachetului), ce trebuie să implementeze interfața Hangman de mai jos, pentru a completa funcționalitatea jocului, astfel:

  • Constructorul clasei HangmanImpl trebuie să aibă un argument de tip String, ce reprezinta cuvântul ce trebuie ghicit, și un întreg ce reprezinta numărul de vieți;
  • Constructorul trebuie să arunce java.lang.IllegalArgumentException dacă cuvântul e mai scurt de 3 caractere, dacă conține altceva decât litere sau dacă numărul de vieți este mai mic sau egal decât 0;
  • Metoda makeMove aruncă java.lang.IllegalArgumentException dacă caracterul primit ca argument nu este o literă, sau java.lang.IllegalStateException dacă se apelează după ce jocul s-a încheiat.
  • Metoda makeMove întoarce un obiect de tip seriaf.poo.tema1.engine.GameState care conține informații legate de starea jocului de după efectuarea mutării.
  • Metoda getGameState întoarce un obiect de tip seriaf.poo.tema1.engine.GameState, ce conține aceleași informații ca și acela întors de ultimul apel al metodei makeMove.
  • Cuvântul conținut în obiectele de tip GameState va avea pe pozițiile literelor ce au fost ghicite chiar litera respectivă, iar pe celelalte poziții, caracterul '_'; astfel, dacă se apelează getGameState înainte de un apel la makeMove, cuvântul conținut în rezultat trebuie să fie format doar din caractere '_', în număr egal cu numărul de caractere din cuvântul ce trebuie ghicit.
  • Jocul nu trebuie să facă diferențe între literele mici și mari.

Se dau următoarele clase, ce trebuie folosite fără a fi modificate: