Commit a59e4bc3 authored by William Babonnaud's avatar William Babonnaud

Ajout d'une fonction redemarre dans Jeu (unification, part. II)

Réécriture de la gestion des couleurs dans Flip
parent 86aa4dc4
......@@ -45,6 +45,17 @@ class Demineur extends Jeu[MonBouton] {
// On n'aura normalement pas à utiliser cette fonction, mais elle doit exister
def reparametrage(x: Int, y: Int) = reparametrage(x,y,10)
// Focntion de redémarrage
def redemarre() = {
for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
boutons(i)(j).reset
boutons(i)(j).icon = scala.swing.Swing.EmptyIcon
boutons(i)(j).enabled = true
}
}
}
// Réactive la variable de premier coup
def resetPremierCoup = premierCoup = true
......
......@@ -40,6 +40,8 @@ class MonBouton(protected var x : Int, protected var y : Int) extends Button {
// Gestion de la couleur du bouton
private var couleur = Color.gray
private var colore = false
def getCouleur = couleur
def estColore = colore
def estColore(c: Color) = colore && (couleur == c)
......@@ -55,6 +57,11 @@ class MonBouton(protected var x : Int, protected var y : Int) extends Button {
background = couleur
colore = true
}
def active_couleur(c: Color) = {
couleur = c
background = c
colore = true
}
def desactive_couleur() = {
couleur = Color.gray
background = couleur
......
......@@ -9,25 +9,25 @@ class Flip extends Jeu[MonBouton] {
// Matrice des boutons.
override protected var boutons = ofDim[MonBouton](tailleX,tailleY)
// Sauvegarde nécessaire pour le redémarrage
private var sauvegardeMat = ofDim[Color](tailleX,tailleY)
// Pour reparamétrer la configuration du terrain
def reparametrage(x: Int, y: Int) = {
tailleX = x
tailleY = y
boutons = ofDim[MonBouton](tailleX,tailleY)
sauvegardeMat = ofDim[Color](tailleX,tailleY)
}
def reparametrage(x: Int, y: Int, n: Int) = reparametrage(x,y)
// Pour fixer la couleur d'un bouton.
// Le champ "libre" de MonBouton permettra de représenter la couleur :
// A true, la case est blanche ; à false elle est noire.
def fixCouleur(i: Int, j: Int) = {
if (boutons(i)(j).estLibre) {
boutons(i)(j).background = Color.white
}
else {
boutons(i)(j).background = Color.black
def redemarre() = {
for(i <- 0 to (tailleX-1)) {
for(j <- 0 to (tailleY-1)) {
boutons(i)(j).active_couleur(sauvegardeMat(i)(j))
}
}
}
......@@ -35,34 +35,49 @@ class Flip extends Jeu[MonBouton] {
def initialise() = {
map_init((i,j) => new MonBouton(i,j), boutons)
var x = Random.nextBoolean
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).chgLibre }
fixCouleur(i,j)
x = Random.nextBoolean}
def f (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).active_couleur(Color.black) }
else { boutons(i)(j).active_couleur(Color.white) }
x = Random.nextBoolean
}
map_apply(f, boutons)
def init (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
sauvegardeMat(i)(j) = boutons(i)(j).getCouleur
}
map_apply(init, boutons)
}
// Génération aléatoire avec graine
def initialise(n: Int) = {
map_init((i,j) => new MonBouton(i,j), boutons)
var ran = new Random(n)
var x = ran.nextBoolean
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).chgLibre }
fixCouleur(i,j)
x = Random.nextBoolean}
map_apply(f, boutons)
map_init((i,j) => new MonBouton(i,j), boutons)
var ran = new Random(n)
var x = ran.nextBoolean
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).active_couleur(Color.black) }
else { boutons(i)(j).active_couleur(Color.white) }
x = Random.nextBoolean}
map_apply(f, boutons)
def init (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
sauvegardeMat(i)(j) = boutons(i)(j).getCouleur
}
map_apply(init, boutons)
}
// Modification de la couleur d'un bouton.
def chgBouton(i: Int, j: Int) = {
boutons(i)(j).chgLibre
fixCouleur(i,j)
if (boutons(i)(j).estColore(Color.white)) {
boutons(i)(j).active_couleur(Color.black)
} else {
boutons(i)(j).active_couleur(Color.white)
}
}
// Renvoire true si toutes les cases du terrain sont blanches
......@@ -71,7 +86,7 @@ class Flip extends Jeu[MonBouton] {
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
res = (res && boutons(i)(j).estLibre)
res = (res && boutons(i)(j).estColore(Color.white))
}
map_apply(f, boutons)
res
......
......@@ -59,6 +59,7 @@ abstract class Jeu[T<:Button] {
def initialise(n: Int) : Unit
def reparametrage(x: Int, y: Int) : Unit
def reparametrage(x: Int, y: Int, n: Int) : Unit
def redemarre() : Unit
def clique_action_droit(x: Int, y: Int) : Boolean
def clique_action_gauche(x: Int, y: Int) : Boolean
......
......@@ -84,13 +84,7 @@ object CercleInvocation extends SimpleSwingApplication {
// Redémarrage du jeu
private def redemarrage = {
for (i <- 0 to (jeu.getTailleX-1)) {
for (j <- 0 to (jeu.getTailleY-1)) {
jeu.getBoutons(i,j).reset
jeu.getBoutons(i,j).icon = scala.swing.Swing.EmptyIcon
jeu.getBoutons(i,j).enabled = true
}
}
jeu.redemarre
jeu.resetPremierCoup
contents = genContents
listen
......
......@@ -23,7 +23,7 @@ class Unruly extends Jeu[MonBouton] {
def reparametrage(x: Int, y: Int, n: Int) = reparametrage(x: Int, y: Int)
def redemarre = {
def redemarre() = {
for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
if (boutons(i)(j).enabled) { boutons(i)(j).desactive_couleur }
......
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