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

ajout d'une exception pour la gestion de la partie + continuité de la gestion de a phase 3

parent 16563349
......@@ -5,10 +5,10 @@ import fr.univnantes.alma.carte.survie.*;
import fr.univnantes.alma.carte.traque.*;
import fr.univnantes.alma.carte.lieux.*;
import fr.univnantes.alma.common.GameJoinRequest;
import fr.univnantes.alma.game.exceptions.TooManyLocationsException;
import fr.univnantes.alma.player.Creature;
import fr.univnantes.alma.player.PlayerProxy;
import fr.univnantes.alma.player.Traque;
import org.apache.thrift.transport.TTransportException;
import org.atlanmod.commons.log.Log;
import java.util.*;
......@@ -169,14 +169,7 @@ public class Game{
}
private void handleRequest(GameJoinRequest request) {
try {
PlayerProxy newPlayer = new PlayerProxy(request.getAddress(), request.getPort(), request.getId(), request.getName());
this.players.add(request.getPlayer());
//newPlayer.askRole();
} catch (TTransportException e) {
e.printStackTrace();
}
this.players.add(request.getPlayer());
}
//-----------------------------------------------------------------------------
......@@ -193,10 +186,14 @@ public class Game{
this.miseEnPlace();
while (!this.isFinished()) {
this.phase1();
this.phase2();
this.phase3();
this.phase4();
try {
this.phase1();
this.phase2();
this.phase3();
this.phase4();
} catch(TooManyLocationsException e) {
e.printStackTrace();
}
}
}
......@@ -206,25 +203,44 @@ public class Game{
joueurCreature.defausserMainTraque();
this.avancerSecours();
}
private void phase3() {
private void phase3() throws TooManyLocationsException {
this.demandeCarteSurvieEtTraque(3);
Lieu location;
//résolution des cartes lieux
for (Enumeration<Integer> i = lieux.keys(); i.hasMoreElements();) {
for (Enumeration<Integer> i = lieux.keys(); i.hasMoreElements(); ) {
int selectedPlayer = i.nextElement();
location = lieux.get(selectedPlayer);
if (location.getId() == creature.get(0).getId()) {
if (estSurLieuCible(location) || estSurLieuCreature(location) || estSurLieuArtemia(location)) {
if (estSurLieuArtemia(location)) {
artemiaEffect(selectedPlayer);
} else {
if (estSurLieuCreature(location)) {
creatureEffect(selectedPlayer);
} else {
cibleEffect(selectedPlayer);
}
}
} else {
location.effet(this, selectedPlayer);
}
location.effet(this, selectedPlayer);
}
}
//effet du jeton cible en phase 3
private void cibleEffect(int selectedPlayer) {
}
//effet du jeton creature en phase 3
private void creatureEffect(int selectedPlayer) {
}
//effet du jeton artemia en phase 3
private void artemiaEffect(int selectedPlayer) {
}
private void phase2() {
isArtemiaActivated = this.secours <= 6;
joueurCreature.troisCartes();
......@@ -290,6 +306,54 @@ public class Game{
}
}
private boolean estSurLieuCible(Lieu lieu) throws TooManyLocationsException {
if (cible.size() == 0) {
return false;
} else {
if (cible.size() == 1) {
return lieu.getId() == cible.get(0).getId();
} else {
if (cible.size() == 2) {
return lieu.getId() == cible.get(0).getId() || lieu.getId() == cible.get(1).getId();
} else {
throw new TooManyLocationsException("trop de lieux référencés dans cible");
}
}
}
}
private boolean estSurLieuCreature(Lieu lieu) throws TooManyLocationsException {
if (creature.size() == 0) {
return false;
} else {
if (creature.size() == 1) {
return lieu.getId() == creature.get(0).getId();
} else {
if (creature.size() == 2) {
return lieu.getId() == creature.get(0).getId() || lieu.getId() == creature.get(1).getId();
} else {
throw new TooManyLocationsException("trop de lieux référencés dans créature");
}
}
}
}
private boolean estSurLieuArtemia(Lieu lieu) throws TooManyLocationsException {
if (artemia.size() == 0) {
return false;
} else {
if (artemia.size() == 1) {
return lieu.getId() == artemia.get(0).getId();
} else {
if (artemia.size() == 2) {
return lieu.getId() == artemia.get(0).getId() || lieu.getId() == artemia.get(1).getId();
} else {
throw new TooManyLocationsException("trop de lieux référencés dans artemia");
}
}
}
}
//si le pion arrive a 0 la partie est finie et la créature a gagné
public void avancerAssimilation() {
this.assimilation--;
......
package fr.univnantes.alma.game.exceptions;
public class TooManyLocationsException extends Exception {
public TooManyLocationsException(String s) {
super(s);
}
}
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