Commit d592e1b2 authored by theray1's avatar theray1
Browse files

acquisition

parent 0b504072
......@@ -21,7 +21,7 @@ public class Case{
}
public boolean caseColoriee(){
return this.couleur == Couleur.A;
return this.couleur != Couleur.A;
}
public Couleur getCouleur() {
......@@ -31,5 +31,9 @@ public class Case{
public void setCouleur(Couleur couleur) {
this.couleur = couleur;
}
public void acquerir() {
this.acquise = true;
}
}
\ No newline at end of file
......@@ -6,17 +6,14 @@ import javax.swing.SwingUtilities;
public class Main {
public static void main(String[] args) {
System.out.println("test");
Plateau plateau = new Plateau(24);
plateau.afficherPlateau();
System.out.println(plateau.getArbrePlateau().getRoot().getV1().getV2().getRegionSuperieure());
Case temp = plateau.getArbrePlateau().rechercheCase(12,13);
plateau.colorierCase(temp, Couleur.B);
System.out.println(plateau.getArbrePlateau().rechercheCase(12,13));
plateau.afficherPlateau();
}
}
......@@ -28,5 +28,11 @@ public class PetiteRegion extends Region{
}
}
public void acquerir() {
for(int i = 9; i < 9; i++) {
cases[i].acquerir();
}
}
}
......@@ -50,6 +50,8 @@ public class Plateau {
this.arbrePlateau.intialiserDepuisMatrice(this.matrice);
}
//retourne un tableau de 9 cases. Si la case c passée en paramètre se trouve en bord du plateau, certains éléments de tableau retourné auront la valeur null
public Case[] voisins(Case c){
/*Case[] lambda = null;
int x = 0;
......@@ -65,8 +67,32 @@ public class Plateau {
}
}
}
return lambda;*/
return null;
return lambda;
this.cases = new Case[9];
this.cases[0] = basGauche;
for(int caseIterator = 1; caseIterator < 9; caseIterator ++) {
this.cases[caseIterator] = cases[basGauche.ligne + caseIterator/3][basGauche.colonne + caseIterator%3];
}
*/
Case[] casesVoisines = new Case[9];
Case basGauche = new Case(c.ligne, c.colonne);//représente la case en bas gauche de la case recherchée et donc du voisinage de cette dernière
Case temp = null;
for(int caseIterator = 0; caseIterator < 9; caseIterator++) {
if(basGauche.ligne + caseIterator/3 >= 0 && basGauche.ligne + caseIterator/3 < longueur && basGauche.colonne + caseIterator%3 >= 0 && basGauche.colonne + caseIterator%3 < longueur) {
casesVoisines[caseIterator] = this.matrice[basGauche.ligne + caseIterator/3][basGauche.colonne + caseIterator%3];
} else {
casesVoisines[caseIterator] = null;
}
}
return casesVoisines;
}
......@@ -89,9 +115,9 @@ public class Plateau {
colorierCase(c, couleur);
int check = 0;
pregion = new PetiteRegion(this.matrice[c.ligne - c.ligne][c.colonne - c.colonne],
PetiteRegion pregion = new PetiteRegion(this.matrice[c.ligne - c.ligne][c.colonne - c.colonne],
this.matrice[c.ligne + (2 - c.ligne)][c.colonne + (2 - c.colonne)],
pregion.getCases());
this.matrice);
//En gros : on veut récuperer la petite région correspondant à c
......@@ -105,7 +131,7 @@ public class Plateau {
for (Case alpha : reg){
colorierCase(alpha, couleur);
}
pregion.acquise = true;
pregion.setAcquise(true);
}
for (Case x : voisinage){
......@@ -137,5 +163,9 @@ public class Plateau {
public void setArbrePlateau(Quadtree arbrePlateau) {
this.arbrePlateau = arbrePlateau;
}
public void acquerir(Region r) {
this.arbrePlateau.acquerir(r);
}
}
......@@ -32,4 +32,9 @@ public class Quadtree {
// TODO Auto-generated method stub
return this.root;
}
public void acquerir(Region r) {
// TODO Auto-generated method stub
this.root.acquerir(r);
}
}
......@@ -3,12 +3,14 @@ package project;
public class QuadtreeNode {
private QuadtreeNode v1, v2, v3, v4; //représentaiton des sous régions sens horaire
private Region region;
private QuadtreeNode regionSuperieure;
public QuadtreeNode() {
this.v1 = null;
this.v2 = null;
this.v3 = null;
this.v4 = null;
this.regionSuperieure = null;
this.region = null;
}
......@@ -79,15 +81,102 @@ public class QuadtreeNode {
this.v1 = new QuadtreeNode();
this.v1.initialiserDepuisMatrice(cases, longueur/2, iBasGauche + longueur/2, jBasGauche); //Recursion sur la région en haut à gauche
this.v1.regionSuperieure = this;
this.v2 = new QuadtreeNode();
this.v2.initialiserDepuisMatrice(cases, longueur/2, iBasGauche + longueur/2, jBasGauche + longueur/2); //Recursion sur la région en haut à droite
this.v2.regionSuperieure = this;
this.v3 = new QuadtreeNode();
this.v3.initialiserDepuisMatrice(cases, longueur/2, iBasGauche, jBasGauche + longueur/2); //Recursion sur la région en bas à droite
this.v3.regionSuperieure = this;
this.v4 = new QuadtreeNode();
this.v4.initialiserDepuisMatrice(cases, longueur/2, iBasGauche, jBasGauche); // Recusrion sur la région en bas à gauche
this.v4.regionSuperieure = this;
}
}
public QuadtreeNode getV1() {
return v1;
}
public void setV1(QuadtreeNode v1) {
this.v1 = v1;
}
public QuadtreeNode getV2() {
return v2;
}
public void setV2(QuadtreeNode v2) {
this.v2 = v2;
}
public QuadtreeNode getV3() {
return v3;
}
public void setV3(QuadtreeNode v3) {
this.v3 = v3;
}
public QuadtreeNode getV4() {
return v4;
}
public void setV4(QuadtreeNode v4) {
this.v4 = v4;
}
public Region getRegion() {
return region;
}
public void setRegion(Region region) {
this.region = region;
}
public QuadtreeNode getRegionSuperieure() {
return regionSuperieure;
}
public void setRegionSuperieure(QuadtreeNode regionSuperieure) {
this.regionSuperieure = regionSuperieure;
}
public void acquerir(Region r) {
// TODO Auto-generated method stub
if(this.region == r) {
_acquerir(r);
} else {
if(this.v1.region.contient(r.getBasGauche().colonne, r.getBasGauche().ligne) && this.v1.region.contient(r.getHautDroite().colonne, r.getHautDroite().ligne)) {
v1.acquerir(r);
}
if(this.v2.region.contient(r.getBasGauche().colonne, r.getBasGauche().ligne) && this.v2.region.contient(r.getHautDroite().colonne, r.getHautDroite().ligne)) {
v2.acquerir(r);
}
if(this.v3.region.contient(r.getBasGauche().colonne, r.getBasGauche().ligne) && this.v3.region.contient(r.getHautDroite().colonne, r.getHautDroite().ligne)) {
v3.acquerir(r);
}
if(this.v4.region.contient(r.getBasGauche().colonne, r.getBasGauche().ligne) && this.v4.region.contient(r.getHautDroite().colonne, r.getHautDroite().ligne)) {
v4.acquerir(r);
}
}
}
private void _acquerir(Region r) {
if(this.region.getLongueur() == 3) {
((PetiteRegion) r).acquerir();
} else {
this.region.acquerir();
v1._acquerir(r);
v2._acquerir(r);
v3._acquerir(r);
v4._acquerir(r);
}
}
......
......@@ -7,7 +7,7 @@ public class Region {
private boolean acquise;
public int longueur(){
public int getLongueur(){
return (this.getBasGauche().colonne - this.getHautDroite().colonne + 1);// rajout de +1 car entre la région entre les colonnes 1 et 3 est de longueur 3, mais 3-1 = 2
}
......@@ -57,5 +57,8 @@ public class Region {
this.acquise = acquise;
}
public void acquerir() {
this.acquise = true;
}
}
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