Commit 55838376 authored by theray1's avatar theray1
Browse files

EvalCaseTéméraire fonctionnel

parent 02675641
......@@ -34,21 +34,26 @@ public class Main {
partie.setJoueur1(new Joueur(Couleur.R, partie));
partie.setJoueur2(new Joueur(Couleur.B, partie));
/*for(int i = 0; i < 6; i++){
for(int j = 0; j < 6; j++){
partie.jouerCase(partie.getPlateau().getMatrice()[i][j], (i+j)%2 == 0? partie.joueur1 : partie.joueur2);
for(int i = 0; i < 24; i++){
for(int j = 0; j < 24; j++){
System.out.println("eval : " + partie.evaluerCase(partie.getPlateau().getMatrice()[j][i], (i+j)%2 == 0? partie.joueur1 : partie.joueur2));
partie.jouerCase(partie.getPlateau().getMatrice()[j][i], (i+j)%2 == 0? partie.joueur1 : partie.joueur2);
partie.setScore(partie.calculeScore());
System.out.println("score : " + partie.getScore());
partie.getPlateau().afficherPlateau();
System.out.println("//-----------------------------------------------");
}
partie.getPlateau().afficherPlateau();
}*/
}
partie.getPlateau().afficherPlateau();
/*partie.getPlateau().afficherPlateau();*/
/*partie.jouerCase(partie.getPlateau().getMatrice()[0][0], partie.joueur1);
partie.jouerCase(partie.getPlateau().getMatrice()[1][1], partie.joueur2);
System.out.println(partie.evaluerCase(1, 0, partie.joueur1));*/
partie.demarrerPartie();
//partie.demarrerPartie();
/*Plateau plateau = new Plateau(24);
......
......@@ -46,7 +46,6 @@ public class Plateau{
for(int i = 0; i < voisins.length; i++) {
if(voisins[i].getCouleur() == adversaire) {
System.out.println("a");
if(couleur == Couleur.B) {
scoreEvalue += 2;
} else {
......@@ -54,7 +53,6 @@ public class Plateau{
}
}
if(voisins[i].equals(c)){
System.out.println("b");
if(couleur == Couleur.B) {
scoreEvalue += 1;;
} else {
......@@ -70,22 +68,36 @@ public class Plateau{
public int EvalCaseTemeraire(Case c, Joueur joueur, int scoreActuel) {
Couleur couleur = joueur.couleur;
Couleur adversaire = (couleur==Couleur.B? Couleur.R: Couleur.B);
int scoreEvalue = scoreActuel;
int modifScore = 0;
Case[] voisins = this.voisins(c);
if(couleur == Couleur.B) {
scoreEvalue += 1;;
} else {
scoreEvalue -= 1;;
}
if(c.getPregion().getNbColoriees() == 8 && c.getCouleur() == Couleur.A){
for (int i = 0; i < voisins.length; i++) {
if (voisins[i].caseColoriee() && !voisins[i].equals(c) && !voisins[i].estAcquise() && !voisins[i].getPregion().equals(c.getPregion())){
if(voisins[i].getCouleur() == adversaire) {
if(couleur == Couleur.B) {
modifScore += 2;
} else {
modifScore -= 2;
}
}
}
}
}else{
if(couleur == Couleur.B) {
modifScore += 1;
} else {
modifScore -= 1;
}
for (int i = 0; i < voisins.length; i++) {
if (voisins[i].caseColoriee() && !voisins[i].equals(c) && !voisins[i].estAcquise()){
if(voisins[i].getCouleur() == adversaire) {
if(couleur == Couleur.B) {
scoreEvalue += 2;
} else {
scoreEvalue -= 2;
for (int i = 0; i < voisins.length; i++) {
if (voisins[i].caseColoriee() && !voisins[i].equals(c) && !voisins[i].estAcquise()){
if(voisins[i].getCouleur() == adversaire) {
if(couleur == Couleur.B) {
modifScore += 2;
} else {
modifScore -= 2;
}
}
}
}
......@@ -94,47 +106,104 @@ public class Plateau{
//Check si la petite région contenant c a été coloriée en entier apres coloration de c
if(c.getPregion().getNbColoriees() == 8 && c.getCouleur() == Couleur.A){
System.out.println('c');
System.out.println("pre : " + (scoreActuel + scoreEvalue));
scoreEvalue += c.getPregion().colorierRegionEvaluation(couleur);
System.out.println("pre : " + (scoreActuel + scoreEvalue));
scoreEvalue += ReglesQuatreEtCinqEvaluation(c.getPregion(), couleur);
int temp = modifScore;
System.out.println("modifscore làààààààààààààààààà : " + modifScore);
modifScore += ReglesQuatreEtCinqEvaluation(c.getPregion(), couleur);
System.out.println("modifscore iscicici : " + modifScore);
if(modifScore == temp){
System.out.println("REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
modifScore += c.getPregion().colorierRegionEvaluation(couleur);
}
}
return scoreEvalue;
return modifScore + scoreActuel;
}
private int ReglesQuatreEtCinqEvaluation(Region reg, Couleur couleur) {
Region regsup = reg.getRegionSuperieure();
if(regsup != null && regsup.estColoriee()) {
int modifScore = 0;
//+1 car quand on appelle cette fonction, on l'appelle sur l'une des regions Vn, pour voir ce qu'il se passerait si elle était acquise. Elle ne l'est pas, donc le compte sera toujours de un en dessous du scénario testé
int compteurRegionsAcquises = 1;
int temp = 0;
if(regsup.getV1().estAcquise()) {compteurRegionsAcquises++;}
if(regsup.getV2().estAcquise()) {compteurRegionsAcquises++;}
if(regsup != null) {
if(regsup.getV3().estAcquise()) {compteurRegionsAcquises++;}
int compteurRegionsColoriées = 1;
if(regsup.getV4().estAcquise()) {compteurRegionsAcquises++;}
//Compte le nombre de régions autres que reg qui sont coloriées
if(regsup.getV1().estColoriee()) {compteurRegionsColoriées++;}
if(regsup.getV2().estColoriee()) {compteurRegionsColoriées++;}
if(regsup.getV3().estColoriee()) {compteurRegionsColoriées++;}
if(regsup.getV4().estColoriee()) {compteurRegionsColoriées++;}
if(compteurRegionsAcquises >= 2 && regsup.estColoriee()) {
modifScore += regsup.colorierRegionEvaluation(couleur);
modifScore += ReglesQuatreEtCinqEvaluation(regsup, couleur);
return modifScore;
}
if(compteurRegionsColoriées == 4){
int modifScore = 0;
temp = modifScore;
//+1 car quand on appelle cette fonction, on l'appelle sur l'une des regions Vn, pour voir ce qu'il se passerait si elle était acquise. Elle ne l'est pas, donc le compte sera toujours de un en dessous du scénario testé
int compteurRegionsAcquises = 1;
if(compteurRegionsAcquises == 1 && regsup.estColoriee()) {
Couleur couleurAdversaire = couleur == Couleur.B ? Couleur.R : Couleur.B;
modifScore += regsup.colorierRegionEvaluation(couleurAdversaire);
modifScore += ReglesQuatreEtCinqEvaluation(regsup, couleur);
return modifScore;
//Comtpe le nombre de régions autres que reg qui sont acquises
if(regsup.getV1().estAcquise() && regsup.getV1().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV2().estAcquise() && regsup.getV2().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV3().estAcquise() && regsup.getV3().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV4().estAcquise() && regsup.getV4().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(compteurRegionsAcquises >= 2 && regsup.getNbColoriees() == regsup.getLongueur()*regsup.getLongueur()-1) {
//Les ifs permettent de garantir que les régions ne sont compatibilisées qu'une fois
if(!reg.equals(regsup.getV1()) || reg instanceof PetiteRegion){
modifScore += regsup.getV1().colorierRegionEvaluation(couleur);
}
if(!reg.equals(regsup.getV2()) || reg instanceof PetiteRegion){
modifScore += regsup.getV2().colorierRegionEvaluation(couleur);
}
if(!reg.equals(regsup.getV3()) || reg instanceof PetiteRegion){
modifScore += regsup.getV3().colorierRegionEvaluation(couleur);
}
if(!reg.equals(regsup.getV4()) || reg instanceof PetiteRegion){
modifScore += regsup.getV4().colorierRegionEvaluation(couleur);
}
if(temp != modifScore){
modifScore += ReglesQuatreEtCinqEvaluation(regsup, couleur);
}
return modifScore;
}
if(compteurRegionsAcquises == 1 && regsup.getNbColoriees() == regsup.getLongueur()*regsup.getLongueur()-1) {
Couleur couleurAdversaire = (couleur == Couleur.B ? Couleur.R : Couleur.B);
//Les ifs permettent de garantir que les régions ne sont compatibilisées qu'une fois
if(!reg.equals(regsup.getV1()) || reg instanceof PetiteRegion){
modifScore += regsup.getV1().colorierRegionEvaluation(couleurAdversaire);
}
if(!reg.equals(regsup.getV2()) || reg instanceof PetiteRegion){
modifScore += regsup.getV2().colorierRegionEvaluation(couleurAdversaire);
}
if(!reg.equals(regsup.getV3()) || reg instanceof PetiteRegion){
modifScore += regsup.getV3().colorierRegionEvaluation(couleurAdversaire);
}
if(!reg.equals(regsup.getV4()) || reg instanceof PetiteRegion){
modifScore += regsup.getV4().colorierRegionEvaluation(couleurAdversaire);
}
if(temp != modifScore){
modifScore += ReglesQuatreEtCinqEvaluation(regsup, couleurAdversaire);
}
return modifScore;
}
}
}
return 0;
}
......@@ -232,7 +301,6 @@ public class Plateau{
}
if (c.getPregion().estAcquise()) {
System.out.println("call r4-5");
ReglesQuatreEtCinq(c.getPregion(), couleur);
}
}
......@@ -257,13 +325,11 @@ public class Plateau{
if(regsup != null && regsup.estColoriee()) {
int compteurRegionsAcquises = 0;
if(regsup.getV1().estAcquise()) {compteurRegionsAcquises++;}
if(regsup.getV2().estAcquise()) {compteurRegionsAcquises++;}
if(regsup.getV3().estAcquise()) {compteurRegionsAcquises++;}
if(regsup.getV4().estAcquise()) {compteurRegionsAcquises++;}
//Comtpe le nombre de régions acquises
if(regsup.getV1().estAcquise() && regsup.getV1().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV2().estAcquise() && regsup.getV2().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV3().estAcquise() && regsup.getV3().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(regsup.getV4().estAcquise() && regsup.getV4().getBasGauche().getCouleur() == couleur) {compteurRegionsAcquises++;}
if(compteurRegionsAcquises >= 2 && regsup.estColoriee()) {
regsup.colorierRegion(couleur);
......@@ -280,7 +346,13 @@ public class Plateau{
public void afficherPlateau() {
for(int i = 0; i < this.matrice.length; i++) {
if(i%3 == 0){
System.out.print('\n');
}
for(int j = 0; j < this.matrice[i].length; j++) {
if(j%3 == 0){
System.out.print(" ");
}
System.out.print(matrice[this.matrice.length - 1 - i][j].getCouleur());
}
System.out.print('\n');
......
......@@ -200,10 +200,17 @@ public class Region {
int modifScore = 0;
modifScore += this.getV1().colorierRegionEvaluation(couleur);
System.out.println("modifScore v1 : " + modifScore);
modifScore += this.getV2().colorierRegionEvaluation(couleur);
System.out.println("modifScore v2 : " + modifScore);
modifScore += this.getV3().colorierRegionEvaluation(couleur);
System.out.println("modifScore v3 : " + modifScore);
modifScore += this.getV4().colorierRegionEvaluation(couleur);
System.out.println("modifScore v4 : " + modifScore);
return modifScore;
}
......@@ -305,4 +312,10 @@ public class Region {
this.regionSuperieure = regionSuperieure;
}
public int getNbColoriees(){
return this.v1.getNbColoriees()
+ this.v2.getNbColoriees()
+ this.v3.getNbColoriees()
+ this.v4.getNbColoriees();
}
}
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