POO Tema 2
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 tipseriaf.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ă.