Commit d373d9ba authored by Fardale's avatar Fardale

refonte solveur unruly

parent 4cf4098e
......@@ -8,8 +8,6 @@ class Flip extends JeuCouleur {
def initialise() = {
map_init((i,j) => new MonBouton(i,j), boutons)
def coloriage (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
b.active_couleur(Color.white)
}
map_apply(coloriage, boutons)
......@@ -33,8 +31,6 @@ class Flip extends JeuCouleur {
def initialise(n: Int) = {
map_init((i,j) => new MonBouton(i,j), boutons)
def coloriage (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
b.active_couleur(Color.white)
}
map_apply(coloriage, boutons)
......
......@@ -107,13 +107,12 @@ class Unruly extends Jeu[MonBouton] {
x = Random.nextInt(tailleX)
y = Random.nextInt(tailleY)
}
if (i == borne) { fini = solveur(x,y,cl) }
boutons(x)(y).setColoration(true)
boutons(x)(y).setCouleur(cl)
boutons(x)(y).chgIconEtEnable(im, false)
nb_non_occupes = nb_non_occupes-1
}
// fini = true
fini = solveur(x,y,cl)
}
}
......@@ -188,6 +187,43 @@ class Unruly extends Jeu[MonBouton] {
if (c == Color.black) { Color.white } else { Color.black }
}
// Solveur_trivial, détermine les cases dont les règles imposent la couleur.
def sol_trivial(x: Int, y: Int) : Boolean = {
var result = false
if(trois(x,y,Color.black)){
result = true; boutons(x)(y).setCouleur(Color.white); boutons(x)(y).active_couleur()}
if(!result && trois(x,y,Color.white)){
result = true; boutons(x)(y).setCouleur(Color.black); boutons(x)(y).active_couleur()}
if(!result && nombre_aligne(x,true,Color.black)=(tailleY/2)){
result = true; boutons(x)(y).setCouleur(Color.white); boutons(x)(y).active_couleur()}
if(!result && nombre_aligne(x,true,Color.white)=(tailleY/2)){
result = true; boutons(x)(y).setCouleur(Color.black); boutons(x)(y).active_couleur()}
if(!result && nombre_aligne(y,false,Color.black)=(tailleX/2)){
result = true; boutons(x)(y).setCouleur(Color.white); boutons(x)(y).active_couleur()}
if(!result && nombre_aligne(y,false,Color.white)=(tailleX/2)){
result = true; boutons(x)(y).setCouleur(Color.black); boutons(x)(y).active_couleur()}
result
}
// Vérifie les conditions trivialles après modif.
def checkmodif(x: Int, y: Int) = {
for(i <- 0 to tailleX - 1 ){
if(!boutons(i)(y).estColore){if(sol_trivial(i,y)){checkmodif(i,y)}}
}
for(j <- 0 to tailleY - 1 ){
if(!boutons(x)(j).estColore){if(sol_trivial(x,j)){checkmodif(x,j)}}
}
}
// Solveur, détermine si une instance donnée admet une solution.
def solveur() = {
for(i <- 0 to tailleX - 1){
for(j <- 0 to tailleY - 1){
if(sol_trivial(x,y)){checkmodif(x,y)}}}
}
// Solveur, détermine si une instance donnée admet une solution.
def solveur(x: Int, y: Int, c: Color) : Boolean = {
boutons(x)(y).setColoration(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