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
b0ff1a2b
Commit
b0ff1a2b
authored
Apr 21, 2020
by
Theo Delbecq
Browse files
Options
Browse Files
Download
Plain Diff
Tentative de merge
parents
ad4f6344
b599e998
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
394 additions
and
0 deletions
+394
-0
Generator.class
build/classes/tictactoecodingame/Generator.class
+0
-0
private.xml
nbproject/private/private.xml
+1
-0
AlgoRecherMinMax1.java
src/tictactoecodingame/AlgoRecherMinMax1.java
+29
-0
Arbre.java
src/tictactoecodingame/Arbre.java
+105
-0
ArbreMinMax.java
src/tictactoecodingame/ArbreMinMax.java
+151
-0
Fraction.java
src/tictactoecodingame/Fraction.java
+58
-0
Generator.java
src/tictactoecodingame/Generator.java
+50
-0
No files found.
build/classes/tictactoecodingame/Generator.class
0 → 100644
View file @
b0ff1a2b
File added
nbproject/private/private.xml
View file @
b0ff1a2b
...
...
@@ -6,6 +6,7 @@
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/Coup.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/CoupTicTacToe.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/Player.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/AlgoRecherMinMax1.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/Joueur.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/JoueurOrdi.java
</file>
<file>
file:/C:/Users/theo/Documents/Ecole/IMT%20Lille%20Douai/L3/Projet%20Info/groupe3-tictactoe/src/tictactoecodingame/AlgoRecherche.java
</file>
...
...
src/tictactoecodingame/AlgoRecherMinMax1.java
0 → 100644
View file @
b0ff1a2b
/*
* 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
*/
public
class
AlgoRecherMinMax1
extends
AlgoRecherche
{
ArrayList
ListCoup
;
public
AlgoRecherMinMax1
()
{
}
@Override
public
Coup
meilleurCoup
(
Plateau
_plateau
,
Joueur
_joueur
,
boolean
_ponder
)
{
ListCoup
=
_plateau
.
getListeCoups
(
_joueur
);
return
;
}
}
src/tictactoecodingame/Arbre.java
0 → 100644
View file @
b0ff1a2b
/*
* 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
*/
public
class
Arbre
{
private
Fraction
value
;
private
ArrayList
<
Coup
>
coups
;
private
ArrayList
<
Arbre
>
fils
;
// Les constructeurs :
public
Arbre
(
Fraction
value
,
ArrayList
coups
,
ArrayList
fils
){
this
.
value
=
value
;
this
.
fils
=
fils
;
this
.
coups
=
coups
;
}
public
Arbre
(
int
den
,
int
num
,
ArrayList
coups
,
ArrayList
fils
){
this
.
value
.
den
=
den
;
this
.
value
.
num
=
num
;
this
.
fils
=
fils
;
this
.
coups
=
coups
;
}
public
Arbre
(
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
++){
Arbre
Arbre_i
=
new
Arbre
(
new
Fraction
());
// Attention ! Ce constructeur initialise donc avec des valeurs nulles en racine !
fils
.
add
(
Arbre_i
);
}
}
public
Arbre
(
Fraction
value
){
this
.
value
=
value
;
}
public
Arbre
(
int
den
,
int
num
){
this
.
value
.
den
=
den
;
this
.
value
.
num
=
num
;
}
// Les accesseurs :
public
double
getvalue
(){
return
(
value
.
getNote
());
}
public
ArrayList
getfils
(){
return
(
fils
);
}
public
ArrayList
getcoups
(){
return
(
coups
);
}
//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
();
Arbre
fils0
=
this
.
fils
.
get
(
0
);
int
maxfils
=
fils0
.
hauteur
();
for
(
int
i
=
1
;
i
<
a
;
i
++){
Arbre
next
=
this
.
fils
.
get
(
i
);
maxfils
=
Math
.
max
(
next
.
hauteur
(),
maxfils
);
}
return
(
1
+
maxfils
);
}
}
}
src/tictactoecodingame/ArbreMinMax.java
0 → 100644
View file @
b0ff1a2b
/*
* 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
*/
public
class
ArbreMinMax
{
public
static
int
N
=
5
;
protected
int
value
;
protected
ArrayList
<
Coup
>
coups
;
protected
ArrayList
<
ArbreMinMax
>
fils
;
// Les constructeurs :
public
ArbreMinMax
(){
}
public
ArbreMinMax
(
int
value
,
ArrayList
coups
,
ArrayList
fils
){
this
.
value
=
value
;
this
.
fils
=
fils
;
this
.
coups
=
coups
;
}
public
ArbreMinMax
(
int
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
++){
ArbreMinMax
Arbre_i
=
new
ArbreMinMax
(
0
);
// Attention ! Ce constructeur initialise donc avec des valeurs nulles en racine !
fils
.
add
(
Arbre_i
);
}
}
public
ArbreMinMax
(
int
value
){
this
.
value
=
value
;
}
// Les accesseurs :
public
int
getvalue
(){
return
(
value
);
}
public
ArrayList
<
ArbreMinMax
>
getfils
(){
return
(
fils
);
}
public
ArrayList
getcoups
(){
return
(
coups
);
}
//Des choses sans nom :
public
void
setvalue
(
int
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
();
ArbreMinMax
fils0
=
this
.
fils
.
get
(
0
);
int
maxfils
=
fils0
.
hauteur
();
for
(
int
i
=
1
;
i
<
a
;
i
++){
ArbreMinMax
next
=
this
.
fils
.
get
(
i
);
maxfils
=
Math
.
max
(
next
.
hauteur
(),
maxfils
);
}
return
(
1
+
maxfils
);
}
}
public
int
Min
(){
int
m
=
2147483640
;
int
a
=
this
.
getfils
().
size
();
for
(
int
i
=
0
;
i
<
a
;
i
++){
int
n
=
this
.
getfils
().
get
(
i
).
getvalue
();
if
(
n
<
m
){
m
=
n
;
}
}
return
m
;
}
public
int
Max
(){
int
m
=
0
;
int
a
=
this
.
getfils
().
size
();
for
(
int
i
=
0
;
i
<
a
;
i
++){
int
n
=
this
.
getfils
().
get
(
i
).
getvalue
();
if
(
n
>
m
){
m
=
n
;
}
}
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
);
}
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
}
}
}
src/tictactoecodingame/Fraction.java
0 → 100644
View file @
b0ff1a2b
/*
* 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
;
/**
*
* @author senda
*/
public
class
Fraction
{
int
num
;
int
den
;
public
Fraction
(
int
n
,
int
d
){
num
=
n
;
den
=
d
;
}
public
Fraction
(){
num
=
0
;
den
=
0
;
}
public
Fraction
(
int
n
){
num
=
n
;
den
=
1
;
}
public
int
getScore
(){
return
num
;
}
public
double
getNote
(){
try
{
return
num
/
den
;
}
catch
(
ArithmeticException
e
){
return
1
.;}
}
public
int
getNumerateur
(){
return
num
;
}
public
int
getDenominateur
(){
return
den
;}
public
void
setDenominateur
(
int
d
){
den
=
d
;}
public
void
setNumerateur
(
int
n
){
num
=
n
;
}
public
void
incrementeNumerateur
(){
num
+=
1
;}
public
void
incrementeDenominateur
(){
den
+=
1
;}
}
src/tictactoecodingame/Generator.java
0 → 100644
View file @
b0ff1a2b
/*
* 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
;
/**
*
* @author Théo
*/
public
class
Generator
{
public
static
int
random_tests
(
Plateau
plateau
,
int
nb_tests
)
{
int
c
=
0
;
JoueurOrdi
player
=
new
JoueurOrdi
(
"player"
);
JoueurOrdi
opponent
=
new
JoueurOrdi
(
"oppo"
);
AlgoRechercheAleatoire
alea
=
new
AlgoRechercheAleatoire
(
);
player
.
setAlgoRecherche
(
alea
);
opponent
.
setAlgoRecherche
(
alea
);
Joueur
currentPlayer
=
player
;
int
i
=((
CoupTicTacToe
)
plateau
.
getDernierCoup
()).
getJeton
().
getJoueur
().
getIdJoueur
();
player
.
forceId
(
1
-
i
);
opponent
.
forceId
(
i
);
Coup
coup
;
plateau
.
sauvegardePosition
(
0
);
for
(
i
=
0
;
i
<
nb_tests
;
i
++){
while
(!
plateau
.
partieTerminee
())
{
coup
=
currentPlayer
.
joue
(
plateau
);
plateau
.
joueCoup
(
coup
);
if
(
currentPlayer
==
player
)
{
currentPlayer
=
opponent
;
}
else
{
currentPlayer
=
player
;
}
}
Joueur
vainqueur
=
plateau
.
vainqueur
();
if
(
vainqueur
==
player
)
c
++;
else
if
(
vainqueur
==
player
)
c
--;
plateau
.
restaurePosition
(
0
);
}
return
c
;
}
}
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