Commit 16563349 authored by Alexandre DESMONTILS's avatar Alexandre DESMONTILS
Browse files

début de la game

parent 17cc626e
......@@ -28,6 +28,7 @@ public class Game{
* Counter used to increment player identifications.
*/
private final AtomicInteger idCounter = new AtomicInteger(0);
private final int id;
private Stack<CarteTraque> piocheTraque;
private Stack<CarteSurvie> piocheSurvie;
private List<CarteTraque> defausseTraque;
......@@ -60,14 +61,15 @@ public class Game{
//liste des traqués (initialisé après les demandes de roles
private Hashtable<Integer, Traque> listTraque;
private Creature joueurCreature;
private boolean isArtemiaActivated;
//----------------------------------------------------------------------------
//creation et connexion à la partie
public Game(int expectedPlayers) {
public Game(int expectedPlayers, int newId) {
this.expectedPlayers = new AtomicInteger(expectedPlayers);
this.requests = new ArrayBlockingQueue<GameJoinRequest>(expectedPlayers);
this.id = newId;
//pour poser le jeton créature, cible et artemia sur des lieux adjacents
this.creature = new ArrayList<Lieu>();
this.artemia = new ArrayList<Lieu>();
......@@ -101,6 +103,7 @@ public class Game{
this.piocheTraque = new Stack<>();
this.defausseSurvie = new Stack<>();
this.defausseTraque = new Stack<>();
this.isArtemiaActivated = false;
//remplissage de la pioche survie
this.initPiocheSurvie();
......@@ -182,8 +185,90 @@ public class Game{
this.waitForPlayers();
distributionDesRoles();
Log.info("We can start !");
for (PlayerProxy i : players) {
i.askRole();
}
this.distributionDesRoles();
this.miseEnPlace();
while (!this.isFinished()) {
this.phase1();
this.phase2();
this.phase3();
this.phase4();
}
}
private void phase4() {
this.demandeCarteSurvieEtTraque(4);
lieux.clear();
joueurCreature.defausserMainTraque();
this.avancerSecours();
}
private void phase3() {
this.demandeCarteSurvieEtTraque(3);
Lieu location;
//résolution des cartes lieux
for (Enumeration<Integer> i = lieux.keys(); i.hasMoreElements();) {
int selectedPlayer = i.nextElement();
location = lieux.get(selectedPlayer);
if (location.getId() == creature.get(0).getId()) {
}
location.effet(this, selectedPlayer);
}
}
private void phase2() {
isArtemiaActivated = this.secours <= 6;
joueurCreature.troisCartes();
//demande des cartes survies et traque de la phase 1
this.demandeCarteSurvieEtTraque(2);
joueurCreature.placerCreature();
//si le pion secours est suffisemment avancé alors on active le pion
isArtemiaActivated = this.secours <= 6;
if (isArtemiaActivated) joueurCreature.placerArtemia();
}
private void phase1() {
//demande des cartes survies et traque de la phase 1
this.demandeCarteSurvieEtTraque(1);
//on demande les cartes lieu aux traqués
for (Traque i : listTraque.values()) {
i.askCartesLieu();
}
//on attends qu'elles soient toutes enregistrées
while (lieux.size() < listTraque.size()) {}
}
private void demandeCarteSurvieEtTraque(int phase) {
for (Traque i : listTraque.values()) {
i.askCarteSurvie(phase);
}
joueurCreature.askCarteTraque(phase);
for (Enumeration<Integer> i = cartesSurvies.keys(); i.hasMoreElements();) {
int playerId = i.nextElement();
cartesSurvies.get(playerId).effet(playerId, this.id);
}
cartesSurvies.clear();
for (CarteTraque i : cartesTraques) {
i.effet(this.id);
}
cartesTraques.clear();
}
private void miseEnPlace() {
}
private void distributionDesRoles() {
//combien de demande de role créature
List<Integer> nbDemandeCréature = new ArrayList<>();
......@@ -205,10 +290,11 @@ public class Game{
}
}
//si le pion arrive a 0 la partie est finie et la créature a gagné
public void avancerAssimilation() {
this.assimilation--;
}
//si le pion arrive a 0 la partie est finie et les traqués ont gagné
public void avancerSecours() {
this.secours--;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment