Commit eca54877 authored by Louis Bahrman's avatar Louis Bahrman
parents 145d49a1 354446df
......@@ -15,19 +15,19 @@ javadoc.preview=true
user.properties.file=/home/louis/.netbeans/11.3/build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
=======
<<<<<<< HEAD
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\timot\\AppData\\Roaming\\NetBeans\\11.2\\build.properties
=======
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\theo\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
<<<<<<< HEAD
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=C:\\Users\\timot\\AppData\\Roaming\\NetBeans\\11.2\\build.properties
=======
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=/home/louis/.netbeans/11.3/build.properties
>>>>>>> 4dd14568c244c833d17b679f8f3b340f997c8d04
>>>>>>> 4f5ab9d710d3dfdc1fe71236031395a85db95bec
......@@ -11,11 +11,11 @@ import java.util.ArrayList;
/**
*
* @author senda
*/
public class AlgoRecherMinMax1 extends AlgoRecherche {
ArrayList ListCoup;
public AlgoRecherMinMax1() {
/*public AlgoRecherMinMax1() {
}
......@@ -26,4 +26,12 @@ public class AlgoRecherMinMax1 extends AlgoRecherche {
return ;
}
}
}*/
/* L'idée c'est :
- Créer un arbre de coups :
On récupère les coups dispo
On fait toutes les possibilités d'enchaînement de coups (<N, <MaxCoupsRestants)
- On applique MinMax
- On rend le meilleur coup selon notre algorythme
*/
\ No newline at end of file
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tictactoecodingame;
import java.util.ArrayList;
/**
*
* @author senda
*/
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public class ArbreMCTS {
private Fraction value;
private ArrayList<Coup> coups;
private ArrayList<ArbreMCTS> fils;
// Les constructeurs :
public ArbreMCTS (Fraction value, ArrayList coups, ArrayList fils){
=======
public class Arbre {
public static int N = 5;
protected Fraction value;
protected ArrayList<Coup> coups;
protected ArrayList<Arbre> fils;
// Les constructeurs :
public Arbre(){
}
public Arbre (Fraction value, ArrayList coups, ArrayList fils){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value = value;
this.fils = fils;
this.coups = coups;
}
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public ArbreMCTS (int den, int num, ArrayList coups, ArrayList fils){
=======
public Arbre (int num, int den, ArrayList coups, ArrayList fils){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value.den = den;
this.value.num = num;
this.fils = fils;
this.coups = coups;
}
public ArbreMCTS (Fraction value, Plateau _plateau, Joueur _joueur){
this.value = value;
this.coups = _plateau.getListeCoups(_joueur) ;
int a = coups.size();
fils = new ArrayList();
for(int i = 0; i < a ; i++){
ArbreMCTS Arbre_i = new ArbreMCTS(new Fraction()); // Attention ! Ce constructeur initialise donc avec des valeurs nulles en racine !
fils.add(Arbre_i);
}
}
public ArbreMCTS (Fraction value){
this.value = value;
}
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public ArbreMCTS (int den, int num){
=======
public Arbre (int num, int den){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value.den = den;
this.value.num = num;
}
// Les accesseurs :
public Fraction getFraction(){
return value;
}
public double getvalue(){
return(value.getNote());
}
public ArrayList<Arbre> getfils(){
return(fils);
}
public ArrayList getcoups(){
return(coups);
}
public Fraction getFrac(){
return(this.value);
}
//Des choses sans nom :
public void setvalue(Fraction value){
this.value = value;
}
public void setfils(ArrayList fils){
this.fils = fils;
}
public void setcoups(ArrayList coups){
this.coups = coups;
}
//Fonctions auxiliaires :
public boolean estFeuille(){
return(fils == null);
}
public boolean estNoeud(){
return(fils != null);
}
public int hauteur(){
if(this.estFeuille()){
return 1;
}
else{
int a = this.fils.size();
ArbreMCTS fils0 = this.fils.get(0);
int maxfils = fils0.hauteur();
for (int i = 1; i < a; i++){
ArbreMCTS next = this.fils.get(i);
maxfils = Math.max(next.hauteur(),maxfils);
}
return(1 + maxfils);
}
}
}
......@@ -11,6 +11,7 @@ import java.util.ArrayList;
*
* @author senda
*/
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public class ArbreMCTS {
private Fraction value;
......@@ -19,12 +20,30 @@ public class ArbreMCTS {
// Les constructeurs :
public ArbreMCTS (Fraction value, ArrayList coups, ArrayList fils){
=======
public class Arbre {
public static int N = 5;
protected Fraction value;
protected ArrayList<Coup> coups;
protected ArrayList<Arbre> fils;
// Les constructeurs :
public Arbre(){
}
public Arbre (Fraction value, ArrayList coups, ArrayList fils){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value = value;
this.fils = fils;
this.coups = coups;
}
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public ArbreMCTS (int den, int num, ArrayList coups, ArrayList fils){
=======
public Arbre (int num, int den, ArrayList coups, ArrayList fils){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value.den = den;
this.value.num = num;
this.fils = fils;
......@@ -47,7 +66,11 @@ public class ArbreMCTS {
this.value = value;
}
<<<<<<< HEAD:src/tictactoecodingame/ArbreMCTS.java
public ArbreMCTS (int den, int num){
=======
public Arbre (int num, int den){
>>>>>>> 354446df7750de3c8bc24e57f0a58c2fce1347bf:src/tictactoecodingame/Arbre.java
this.value.den = den;
this.value.num = num;
}
......@@ -61,14 +84,18 @@ public class ArbreMCTS {
return(value.getNote());
}
public ArrayList getfils(){
public ArrayList<Arbre> getfils(){
return(fils);
}
public ArrayList getcoups(){
return(coups);
}
public Fraction getFrac(){
return(this.value);
}
//Des choses sans nom :
public void setvalue(Fraction value){
this.value = value;
......
......@@ -6,6 +6,7 @@
package tictactoecodingame;
import java.util.ArrayList;
import static tictactoecodingame.Generator.random_tests;
/**
*
......@@ -13,7 +14,6 @@ import java.util.ArrayList;
*/
public class ArbreMinMax {
public static int N = 5;
protected int value;
protected ArrayList<Coup> coups;
protected ArrayList<ArbreMinMax> fils;
......@@ -53,9 +53,14 @@ public class ArbreMinMax {
}
public ArrayList<ArbreMinMax> getfils(){
return(fils);
if(fils != null){
return(fils);
}
else{
return null;
}
}
public ArrayList getcoups(){
return(coups);
}
......@@ -123,29 +128,27 @@ public class ArbreMinMax {
return m;
}
public void MinMax(int h){
// h = hauteur, on l'incrémente comme un compteur
// N est la profondeur à explorer en MinMax, toutes les feuilles en N+1 sont évaluées
// La racine est un Max, donc impair -> Max, pair -> Min
if(N >= h){ // On doit chosir entre min et max
if(h%2 == 0){
//On attribue le Min
int m = this.Min();
this.setvalue(m);
}
else{
//On attribue le max
int m = this.Max();
this.setvalue(m);
}
public void MinMax(int c){
// c = compteur
// Le compteur doit être initialisé à 0 donc pair -> Max, impair -> Min
if(this.getfils() != null){
int a = this.getfils().size();
for(int i = 0; i < a ; i++){
this.getfils().get(i).MinMax(h + 1);
}
this.getfils().get(i).MinMax(c+1);
}
}
else{//On a h > N, on utilise la fonction d'évaluation
if(c%2 == 0){
//On attribue le Min
int m = this.Min();
this.setvalue(m);
}
else{
//On attribue le max
int m = this.Max();
this.setvalue(m);
}
}
}
}
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