POO Tema 2

De la WikiLabs
Versiunea din 22 noiembrie 2015 21:07, autor: Rhobincu (discuție | contribuții) (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>...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)
Jump to navigationJump to search

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 TicTacTieEngine, 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ă.