POO Tema 1: Diferență între versiuni

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...)
 
Fără descriere a modificării
 
(Nu s-au afișat 12 versiuni intermediare efectuate de același utilizator)
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. Acestea trebuie plasate în proiectul vostru conform definiției pachetului lor.
* [[Fișier:Main.java]]
* [[Fișier:Hangman.java]]
* [[Fișier:GameState.java]]


<syntaxhighlight lang="Java">
Pentru a testa jocul, acesta trebuie pornit din consolă (va arunca un NPE dacă încercați să-l porniți din Netbeans). După compilare (butonul Clean & Build), puteți deschide o consolă, naviga până în directorul proiectului și apoi puteți rula comanda <code style="color: green">java -jar dist&#92;<nume_proiect>.jar</code>, înlocuind <nume_proiect> cu numele proiectului vostru.
package seriaf.poo.tema1;


import java.io.Console;
Puteți implementa oricâte alte clase, dar obligatoriu trebuie să aveți clasa <code style="color: green">HangmanImpl</code> și nu aveți voie să modificați nici una din clasele de mai sus.
import seriaf.poo.tema1.engine.GameState;
import seriaf.poo.tema1.engine.Hangman;
import seriaf.poo.tema1.engine.implementation.HangmanImpl;


/**
Link pentru upload Web-Cat, [http://homework.dcae.pub.ro:8888/Web-CAT/WebObjects/Web-CAT.woa?page=UploadSubmission&aoid=8 aici].
* 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 curentă din 7 noiembrie 2015 20:12

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. Acestea trebuie plasate în proiectul vostru conform definiției pachetului lor.

Pentru a testa jocul, acesta trebuie pornit din consolă (va arunca un NPE dacă încercați să-l porniți din Netbeans). După compilare (butonul Clean & Build), puteți deschide o consolă, naviga până în directorul proiectului și apoi puteți rula comanda java -jar dist\<nume_proiect>.jar, înlocuind <nume_proiect> cu numele proiectului vostru.

Puteți implementa oricâte alte clase, dar obligatoriu trebuie să aveți clasa HangmanImpl și nu aveți voie să modificați nici una din clasele de mai sus.

Link pentru upload Web-Cat, aici.