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

De la WikiLabs
Jump to navigationJump to search
(Pagină nouă: Realizați o implementare simplă a jocului "X și 0". = Cerințe = Implementați o clasă, numită <code style="color: green">seriaf.poo.tema2.engine.TicTacTieEngineImpl</code>...)
 
Linia 3: Linia 3:
 
= Cerințe =
 
= Cerințe =
  
Implementați o clasă, numită <code style="color: green">seriaf.poo.tema2.engine.TicTacTieEngineImpl</code> (atenție la numele pachetului), ce trebuie să implementeze interfața <code style="color: green">TicTacTieEngine</code>, pentru a completa funcționalitatea jocului, astfel:
+
Implementați o clasă, numită <code style="color: green">seriaf.poo.tema2.engine.TicTacTieEngineImpl</code> (atenție la numele pachetului), ce trebuie să implementeze interfața <code style="color: green">TicTacToeEngine</code>, pentru a completa funcționalitatea jocului, astfel:
 
* Constructorul clasei <code style="color: green">TicTacTieEngineImpl</code> trebuie să nu aibă argumente;
 
* Constructorul clasei <code style="color: green">TicTacTieEngineImpl</code> trebuie să nu aibă argumente;
 
* Metoda <code style="color: green">makeMove</code> aruncă <code style="color: green">java.lang.IllegalArgumentException</code> dacă valoarea primită ca argument este în afara intervalului 0-8 sau dacă pe poziția respectivă există deja un X sau 0;
 
* Metoda <code style="color: green">makeMove</code> aruncă <code style="color: green">java.lang.IllegalArgumentException</code> dacă valoarea primită ca argument este în afara intervalului 0-8 sau dacă pe poziția respectivă există deja un X sau 0;

Versiunea de la data 22 noiembrie 2015 21:07

Realizați o implementare simplă a jocului "X și 0".

Cerințe

Implementați o clasă, numită seriaf.poo.tema2.engine.TicTacTieEngineImpl (atenție la numele pachetului), ce trebuie să implementeze interfața TicTacToeEngine, pentru a completa funcționalitatea jocului, astfel:

  • Constructorul clasei TicTacTieEngineImpl trebuie să nu aibă argumente;
  • Metoda makeMove aruncă java.lang.IllegalArgumentException dacă valoarea primită ca argument este în afara intervalului 0-8 sau dacă pe poziția respectivă există deja un X sau 0;
  • Metoda makeMove întoarce un obiect de tip seriaf.poo.tema1.engine.GameStatus care conține informații legate de starea jocului de după efectuarea mutării:
    • mutarea calculatorului;
    • fanion care semnalează un joc câștigat de către jucător;
    • fanion care semnalează un joc pierdut de către jucător;
    • fanion care semnalează o remiză;

Se dă următorul proiect Netbeans pentru dezvoltare. Acesta conține clase care pot fi utilizate pentru testarea voastră, inclusiv conține toate testele care se rulează și pe Web-CAT. Pentru a le rula, selectați Run->Test Project.

Puteți implementa oricâte alte clase, dar obligatoriu trebuie să aveți clasa TicTacTieEngineImpl și nu aveți voie să modificați nici una din clasele deja existente în proiect.

Link pentru upload Web-Cat, aici.

Algoritm

O eventuală implementare de algoritm, pe care voi o puteți îmbunătăți, este următoarea:

  • Dacă există o mutare prin care calculatorul (AI) câștigă, se face acea mutare. Dacă nu,
  • Dacă există o mutare prin care jucătorul va câștiga, se face acea mutare, pentru ca AI-ul să prevină pierderea jocului. Dacă nu,
  • Se va juca mutarea disponibilă care acoperă cele mai multe opțuni de pe tablă:
    • centru,
    • oricare din colțuri,
    • oricare din variantele rămase.

Acest algoritm nu este perfect, există jocuri prin care AI-ul pierde, dar acest algoritm va trece toate testele pentru notă.