Commit dca86534 authored by theray1's avatar theray1
Browse files

IA Téméraire v1

parent aeac1b63
......@@ -23,8 +23,6 @@ public class Bot extends Joueur{
}
public Case JouerIATemeraire() {
//TODO : METHODE OBLIGATOIRE
return null;
return partie.getPlateau().getArbrePlateau().meilleurCoup();
}
}
......@@ -44,6 +44,7 @@ public class Case{
* @param couleur la couleur avec laquelle on veut colorier la case
*/
public void colorierTemeraire(Couleur couleur) {
this.setCouleur(couleur);
this.getPregion().updateAcquise();
......@@ -79,6 +80,7 @@ public class Case{
* @param couleur la couleur avec laquelle on veut colorier la case
*/
public void setCouleur(Couleur couleur) {
//this.couleur != Couleur.A? this.getPregion().setNbColoriees(this.getPregion().getNbColoriees()+1) : ;
this.couleur = couleur;
}
......
......@@ -4,7 +4,7 @@ package project;
* Implémente les régions de taille 3 * 3
*/
public class PetiteRegion extends Region{
private Case[] cases;
//6 7 8
//3 4 5
......@@ -159,6 +159,23 @@ public class PetiteRegion extends Region{
return returnArray;
}
@Override
public Case meilleurCoup() {
System.out.println("ICI JAMY LE NOMBRE DE CASES COLORIEES EST DE : " + this.getNbColoriees() + "!!!!");
if(getNbColoriees()%2 == 0){
for(Case c : cases){
System.out.println("ICI JAMY J AI AUCUNE IDEE DE CE QU IL SE PASSE!!");
if(c.getCouleur() == Couleur.A){
System.out.println("EN FAIT JAMY J AI COMPRIS, JE SUIS JUSTE UN CONNARD");
return c;
}
}
}
return null;
}
//GETTERS SETTERS
/**
* @return les cases contenus dans cette petite région
......
......@@ -6,7 +6,6 @@ import java.util.LinkedList;
* Actualisation de la case ayant le plus de valeur à tout moment du jeu, pour l'algorithme glouton
*/
public class Pile {
int scoreMax;
LinkedList<LinkedList<Case>> banquet;
public Pile() {
......@@ -37,7 +36,7 @@ public class Pile {
public void empilerCase(Case c){
if(c.getValeur() > banquet.size()){
for(int i = 0; i < c.getValeur() - banquet.size(); i++){
banquet.push(new LinkedList<>());
banquet.push(new LinkedList<Case>());
}
}
//System.out.println(banquet.get(c.getValeur()-1));
......
......@@ -24,6 +24,11 @@ public class Quadtree {
this.root.initialiserDepuisMatrice(cases, cases.length, 0, 0, null);
}
public Case meilleurCoup() {
return this.root.meilleurCoup();
}
//En fait ça sert a rien on peut déjà trouver une case en temps constant avec le tableau de tableau de cases dans la classe Plateau
/*
public Case rechercheCase(int iCaseRecherchee, int jCaseRecherchee) {
......
......@@ -223,6 +223,34 @@ public class Region {
return new int[]{scorev1[0] + scorev2[0] + scorev3[0] + scorev4[0], scorev1[1] + scorev2[1] + scorev3[1] + scorev4[1]};
}
public Case meilleurCoup() {
// On pourrait croire que meilleurCase peut etre nul. Cependant, Le nombre de cases coloriées augmente toujours de 1 à chaque tour, et l'ordinateur joue toujours en deuxième
// Ainsi il y'a toujours une petite région au moins dans laquelle il y'a un nombre pair de cases coloriées lorsque l'ordinateur joue.
// Si cette petite région n'est pas dans v1, on cherche dans v2. Si elle n'est pas dans v2, dans v3. Si elle n'est pas dans v3, alors elle est forcément dans v4
Case meilleurCase = null;
if(!this.v1.estColoriee()){
meilleurCase = this.v1.meilleurCoup();
}
if(meilleurCase == null){
meilleurCase = this.v2.meilleurCoup();
}
if(meilleurCase == null){
meilleurCase = this.v3.meilleurCoup();
}
if(meilleurCase == null){
System.out.println(this.v4.getNbColoriees());
meilleurCase = this.v4.meilleurCoup();
}
return meilleurCase;
}
//GETTERS SETTERS
public int getLongueur(){
......@@ -318,4 +346,6 @@ public class Region {
+ 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