Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Groupe3-TicTacToe
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
BAHRMAN Louis
Groupe3-TicTacToe
Commits
eca54877
Commit
eca54877
authored
Apr 21, 2020
by
Louis Bahrman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gvipers.imt-lille-douai.fr/louis.bahrman/groupe3-tictactoe
parents
145d49a1
354446df
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
218 additions
and
44 deletions
+218
-44
private.properties
nbproject/private/private.properties
+15
-15
AlgoRecherMinMax1.java
src/tictactoecodingame/AlgoRecherMinMax1.java
+11
-3
Arbre.java
src/tictactoecodingame/Arbre.java
+136
-0
ArbreMCTS.java
src/tictactoecodingame/ArbreMCTS.java
+29
-2
ArbreMinMax.java
src/tictactoecodingame/ArbreMinMax.java
+27
-24
No files found.
nbproject/private/private.properties
View file @
eca54877
...
@@ -28,6 +28,6 @@ do.depend=false
...
@@ -28,6 +28,6 @@ do.depend=false
do.jar
=
true
do.jar
=
true
javac.debug
=
true
javac.debug
=
true
javadoc.preview
=
true
javadoc.preview
=
true
user.properties.file
=
C:
\\
Users
\\
theo
\\
AppData
\\
Roaming
\\
NetBeans
\\
8.0.2
\\
build.properties
user.properties.file
=
/home/louis/.netbeans/11.3/build.properties
>>>>>>>
4dd14568c244c833d17b679f8f3b340f997c8d04
>>>>>>>
4dd14568c244c833d17b679f8f3b340f997c8d04
>>>>>>>
4f5ab9d710d3dfdc1fe71236031395a85db95bec
>>>>>>>
4f5ab9d710d3dfdc1fe71236031395a85db95bec
src/tictactoecodingame/AlgoRecherMinMax1.java
View file @
eca54877
...
@@ -11,11 +11,11 @@ import java.util.ArrayList;
...
@@ -11,11 +11,11 @@ import java.util.ArrayList;
/**
/**
*
*
* @author senda
* @author senda
*/
public class AlgoRecherMinMax1 extends AlgoRecherche {
public class AlgoRecherMinMax1 extends AlgoRecherche {
ArrayList ListCoup;
ArrayList ListCoup;
public
AlgoRecherMinMax1
()
{
/*
public AlgoRecherMinMax1() {
}
}
...
@@ -26,4 +26,12 @@ public class AlgoRecherMinMax1 extends AlgoRecherche {
...
@@ -26,4 +26,12 @@ public class AlgoRecherMinMax1 extends AlgoRecherche {
return ;
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
src/tictactoecodingame/Arbre.java
0 → 100644
View file @
eca54877
/*
* 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
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
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
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
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
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
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
);
}
}
}
src/tictactoecodingame/ArbreMCTS.java
View file @
eca54877
...
@@ -11,6 +11,7 @@ import java.util.ArrayList;
...
@@ -11,6 +11,7 @@ import java.util.ArrayList;
*
*
* @author senda
* @author senda
*/
*/
<<<<<<<
HEAD:
src
/
tictactoecodingame
/
ArbreMCTS
.
java
public
class
ArbreMCTS
{
public
class
ArbreMCTS
{
private
Fraction
value
;
private
Fraction
value
;
...
@@ -19,12 +20,30 @@ public class ArbreMCTS {
...
@@ -19,12 +20,30 @@ public class ArbreMCTS {
// Les constructeurs :
// Les constructeurs :
public
ArbreMCTS
(
Fraction
value
,
ArrayList
coups
,
ArrayList
fils
){
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
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
src
/
tictactoecodingame
/
Arbre
.
java
this
.
value
=
value
;
this
.
value
=
value
;
this
.
fils
=
fils
;
this
.
fils
=
fils
;
this
.
coups
=
coups
;
this
.
coups
=
coups
;
}
}
<<<<<<<
HEAD:
src
/
tictactoecodingame
/
ArbreMCTS
.
java
public
ArbreMCTS
(
int
den
,
int
num
,
ArrayList
coups
,
ArrayList
fils
){
public
ArbreMCTS
(
int
den
,
int
num
,
ArrayList
coups
,
ArrayList
fils
){
=======
public
Arbre
(
int
num
,
int
den
,
ArrayList
coups
,
ArrayList
fils
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
src
/
tictactoecodingame
/
Arbre
.
java
this
.
value
.
den
=
den
;
this
.
value
.
den
=
den
;
this
.
value
.
num
=
num
;
this
.
value
.
num
=
num
;
this
.
fils
=
fils
;
this
.
fils
=
fils
;
...
@@ -47,7 +66,11 @@ public class ArbreMCTS {
...
@@ -47,7 +66,11 @@ public class ArbreMCTS {
this
.
value
=
value
;
this
.
value
=
value
;
}
}
<<<<<<<
HEAD:
src
/
tictactoecodingame
/
ArbreMCTS
.
java
public
ArbreMCTS
(
int
den
,
int
num
){
public
ArbreMCTS
(
int
den
,
int
num
){
=======
public
Arbre
(
int
num
,
int
den
){
>>>>>>>
354446
df7750de3c8bc24e57f0a58c2fce1347bf:
src
/
tictactoecodingame
/
Arbre
.
java
this
.
value
.
den
=
den
;
this
.
value
.
den
=
den
;
this
.
value
.
num
=
num
;
this
.
value
.
num
=
num
;
}
}
...
@@ -61,7 +84,7 @@ public class ArbreMCTS {
...
@@ -61,7 +84,7 @@ public class ArbreMCTS {
return
(
value
.
getNote
());
return
(
value
.
getNote
());
}
}
public
ArrayList
getfils
(){
public
ArrayList
<
Arbre
>
getfils
(){
return
(
fils
);
return
(
fils
);
}
}
...
@@ -69,6 +92,10 @@ public class ArbreMCTS {
...
@@ -69,6 +92,10 @@ public class ArbreMCTS {
return
(
coups
);
return
(
coups
);
}
}
public
Fraction
getFrac
(){
return
(
this
.
value
);
}
//Des choses sans nom :
//Des choses sans nom :
public
void
setvalue
(
Fraction
value
){
public
void
setvalue
(
Fraction
value
){
this
.
value
=
value
;
this
.
value
=
value
;
...
...
src/tictactoecodingame/ArbreMinMax.java
View file @
eca54877
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
package
tictactoecodingame
;
package
tictactoecodingame
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
static
tictactoecodingame
.
Generator
.
random_tests
;
/**
/**
*
*
...
@@ -13,7 +14,6 @@ import java.util.ArrayList;
...
@@ -13,7 +14,6 @@ import java.util.ArrayList;
*/
*/
public
class
ArbreMinMax
{
public
class
ArbreMinMax
{
public
static
int
N
=
5
;
protected
int
value
;
protected
int
value
;
protected
ArrayList
<
Coup
>
coups
;
protected
ArrayList
<
Coup
>
coups
;
protected
ArrayList
<
ArbreMinMax
>
fils
;
protected
ArrayList
<
ArbreMinMax
>
fils
;
...
@@ -53,8 +53,13 @@ public class ArbreMinMax {
...
@@ -53,8 +53,13 @@ public class ArbreMinMax {
}
}
public
ArrayList
<
ArbreMinMax
>
getfils
(){
public
ArrayList
<
ArbreMinMax
>
getfils
(){
if
(
fils
!=
null
){
return
(
fils
);
return
(
fils
);
}
}
else
{
return
null
;
}
}
public
ArrayList
getcoups
(){
public
ArrayList
getcoups
(){
return
(
coups
);
return
(
coups
);
...
@@ -123,29 +128,27 @@ public class ArbreMinMax {
...
@@ -123,29 +128,27 @@ public class ArbreMinMax {
return
m
;
return
m
;
}
}
public
void
MinMax
(
int
h
){
public
void
MinMax
(
int
c
){
// h = hauteur, on l'incrémente comme un compteur
// c = compteur
// N est la profondeur à explorer en MinMax, toutes les feuilles en N+1 sont évaluées
// Le compteur doit être initialisé à 0 donc pair -> Max, impair -> Min
// La racine est un Max, donc impair -> Max, pair -> Min
if
(
N
>=
h
){
// On doit chosir entre min et max
if
(
this
.
getfils
()
!=
null
){
if
(
h
%
2
==
0
){
int
a
=
this
.
getfils
().
size
();
for
(
int
i
=
0
;
i
<
a
;
i
++){
this
.
getfils
().
get
(
i
).
MinMax
(
c
+
1
);
}
}
if
(
c
%
2
==
0
){
//On attribue le Min
//On attribue le Min
int
m
=
this
.
Min
();
int
m
=
this
.
Min
();
this
.
setvalue
(
m
);
this
.
setvalue
(
m
);
}
}
else
{
else
{
//On attribue le max
//On attribue le max
int
m
=
this
.
Max
();
int
m
=
this
.
Max
();
this
.
setvalue
(
m
);
this
.
setvalue
(
m
);
}
}
int
a
=
this
.
getfils
().
size
();
for
(
int
i
=
0
;
i
<
a
;
i
++){
this
.
getfils
().
get
(
i
).
MinMax
(
h
+
1
);
}
}
}
else
{
//On a h > N, on utilise la fonction d'évaluation
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment